ssi整合,即spring、springmvc、mybatis终极整合,包括一些优化
一、創(chuàng)建一個(gè)Web工程
二、導(dǎo)入jar包到lib下
c3p0-0.9:
mvc_jackson-1.7.2
mybatis_spring
myBatis3.2.2
mysql_driver
spring-3.2-aop
spring-3.2-core
spring-3.2-persistence
spring-3.2-web
三、整合spring與mybatis及springmvc
注意:注釋的代碼是正常配置的,注釋下邊的是優(yōu)化以后的
配置文件如下
myBatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 通過別名簡(jiǎn)化對(duì)類的使用 --> <typeAliases><!-- <typeAlias type="cn.buaa.scm.entity.Dept" alias="Dept" /> --><!-- 通過package, 可以直接指定package的名字, mybatis會(huì)自動(dòng)掃描你指定包下面的javabean,并且默認(rèn)設(shè)置一個(gè)別名,默認(rèn)的名字為非限定類名來作為它的別名。 --><package name="cn.buaa.scm.entity"/></typeAliases><!-- <mappers><mapper resource="cn/buaa/scm/entity/DeptMapper.xml" /></mappers> --> </configuration>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"><!-- 配置數(shù)據(jù)源,記得去掉myBatis-config.xml的數(shù)據(jù)源相關(guān)配置 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/scm?useUnicode=true&characterEncoding=UTF-8" /><property name="user" value="root" /><property name="password" value="123456" /> </bean><!-- 配置session工廠 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:myBatis-config.xml" /><!--配置掃描式加載SQL映射文件,記得去掉mybatis-config配置--><property name="mapperLocations" value="classpath:cn/buaa/scm/dao/*.xml"/></bean><!-- 配置事務(wù)管理器,管理數(shù)據(jù)源事務(wù)處理--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 配置事務(wù)通知 --><tx:advice id="advice" transaction-manager="transactionManager"><tx:attributes> <!-- 默認(rèn)只處理運(yùn)行時(shí)異常,可加rollback-for="Exception/Throwable"等處理所有異常或包括錯(cuò)誤 --><tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="*" propagation="SUPPORTS"/></tx:attributes></tx:advice><!-- 配置切面織入的范圍,后邊要把事務(wù)邊界定在service層 --><aop:config><aop:advisor advice-ref="advice" pointcut="execution(* cn.buaa.scm.service.impl.*.*(..))"/></aop:config><!-- 配置SessionTemplate,已封裝了繁瑣的數(shù)據(jù)操作--><bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean><!-- <context:component-scan base-package="*"/> --><!-- 自動(dòng)掃描組件,要把controller去除,他們是在spring-mvc.xml中配置,如果不去除會(huì)影響事務(wù)管理。 --> <context:component-scan base-package="cn.buaa"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /></context:component-scan><!-- 配置 轉(zhuǎn)換器,對(duì)于在basePackage設(shè)置的包(包括子包)下的接口類,如果在Mapper.xml文件中定義過,將被轉(zhuǎn)換成spring的BEAN,在調(diào)用 的地方通過@Autowired方式將可以注入接口實(shí)例--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactory" ref="sqlSessionFactory"/><property name="basePackage" value="cn.buaa.scm.dao"/></bean></beans> myBatis-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><mvc:annotation-driven></mvc:annotation-driven><!-- <context:component-scan base-package="*"/> --><!-- 掃描所有的controller 但是不掃描service --><context:component-scan base-package="cn.buaa"><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller" /><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Service" /></context:component-scan> </beans> log4j.properties
# Rules reminder: # DEBUG < INFO < WARN < ERROR < FATAL# Global logging configuration log4j.rootLogger=INFO,stdout# My logging configuration... log4j.logger.cn.jbit.mybatisdemo=DEBUG## Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%nlog4j.logger.org.apache.ibatis=DEBUG ## log4j.logger.org.apache.jdbc.SimpleDataSource=DEBUG log4j.logger.org.apache.ibatis.jdbc.ScriptRunner=DEBUG ## log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapclientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG newSql.sql
drop database if exists scm;create database scm default character set utf8;use scm;drop table if exists supplier;/*============================*/ /* Table: 管理員表結(jié)構(gòu) */ /*============================*/ create table account (/* 管理員編號(hào),自動(dòng)增長(zhǎng) */acc_id int not null auto_increment,/* 管理員登錄名 */acc_login varchar(20),/* 管理員姓名 */acc_name varchar(20),/* 管理員密碼 */acc_pass varchar(20),/* 設(shè)置編號(hào)為主鍵 */primary key (acc_id) );/*==============================================================*/ /* Table: 供應(yīng)商表 */ /*==============================================================*/create table supplier (sup_id int not null auto_increment,sup_name varchar(20),sup_linkman varchar(20),sup_phone varchar(11),sup_address varchar(100),sup_remark varchar(200),primary key (sup_id) );/* 添加供應(yīng)商數(shù)據(jù), */ insert into account (acc_login,acc_pass) values ('admin','admin'); insert into account (acc_login,acc_pass) values ('admin2','admin2'); /* 添加供應(yīng)商數(shù)據(jù), */ insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('蘋果供應(yīng)商','小張','12388888887','廣州花都','普通供應(yīng)商'); insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('三星供應(yīng)商','小王','12388888888','廣州增城','普通供應(yīng)商'); insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('華為供應(yīng)商','小王','12388888889','廣東深圳','一級(jí)供應(yīng)商');select * from account; select * from supplier; generatorConfig.xml (mybatis逆向工程配置文件,上個(gè)文章有介紹插件的安裝)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration> <!--<properties resource="conn.properties" />--><classPathEntry location="G:\jar_lib\mysql_driver\mysql-connector-java-5.1.26-bin.jar"/><!-- 指定運(yùn)行環(huán)境是mybatis3的版本 --><context id="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- 是否取消注釋 --><property name="suppressAllComments" value="true" /><!-- 是否生成注釋代時(shí)間戳 --><property name="suppressDate" value="true" /></commentGenerator><!-- jdbc 連接信息 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/scm?useUnicode=true&characterEncoding=UTF-8" userId="root" password="123456"></jdbcConnection><!-- targetPackage指定模型在生成在哪個(gè)包 ,targetProject指定項(xiàng)目的src,--> <javaModelGenerator targetPackage="cn.buaa.scm.entity"targetProject="scm/src"><!-- 去除字段前后空格 --><property name="trimStrings" value="false" /></javaModelGenerator><!-- 配置SQL映射文件生成信息 --><sqlMapGenerator targetPackage="cn.buaa.scm.dao"targetProject="scm/src" /><!--配置dao接口生成信息--><javaClientGenerator type="XMLMAPPER" targetPackage="cn.buaa.scm.dao" targetProject="scm/src" /><table tableName="account" domainObjectName="Account"/><table tableName="supplier" domainObjectName="Supplier"/></context> </generatorConfiguration> web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><servlet><servlet-name>mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>
四、entity及其dao等
SupplierMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.buaa.scm.dao.SupplierMapper"><resultMap id="supplierResultMap" type="cn.buaa.scm.entity.Supplier"><id column="sup_id" property="supId" jdbcType="INTEGER" /><result column="sup_name" property="supName" jdbcType="VARCHAR" /><result column="sup_linkman" property="supLinkman" jdbcType="VARCHAR" /><result column="sup_phone" property="supPhone" jdbcType="VARCHAR" /><result column="sup_address" property="supAddress" jdbcType="VARCHAR" /><result column="sup_remark" property="supRemark" jdbcType="VARCHAR" /></resultMap><insert id="insert" parameterType="Supplier">insert into supplier(sup_name) values (#{supName})</insert> </mapper>
SupplierMapper.java (Dao 以為插件生成了這樣,認(rèn)識(shí)就好)
package cn.buaa.scm.dao;import cn.buaa.scm.entity.Supplier;public interface SupplierMapper extends BaseMapper<Supplier>{/*** 添加供應(yīng)商* @param supplier* @return*/}
SupplierServiceImpl.java
package cn.buaa.scm.service.impl;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import cn.buaa.scm.dao.SupplierMapper; import cn.buaa.scm.entity.Supplier; import cn.buaa.scm.service.SupplierService; @Service("supplierService") public class SupplierServiceImpl implements SupplierService {//@Resource@Autowiredprivate SupplierMapper supplierMapper;public int insert(Supplier supplier) throws Exception {return supplierMapper.insert(supplier);}@Overridepublic int delete(Supplier entity) {return 0;}@Overridepublic Supplier select(Supplier entity) {return null;}@Overridepublic int update(Supplier entity) throws Exception {// TODO Auto-generated method stubreturn 0;}} SupplierAction.java
package cn.buaa.scm.action;import javax.annotation.Resource;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import cn.buaa.scm.entity.Supplier; import cn.buaa.scm.service.SupplierService;@Controller @RequestMapping(value="/supplier") public class SupplierAction extends BaseAction {@Resourceprivate SupplierService supplierService;@RequestMapping(value="/insert")public String insert(Supplier supplier){System.out.println("---action.dept:"+supplier);try {supplierService.insert(supplier);} catch (Exception e) {e.printStackTrace();}return "forward:/jsp/main.jsp";}@RequestMapping("/doAjax")@ResponseBody //如果返回json格式,需要這個(gè)注解,這里用來測(cè)試環(huán)境public Object doAjax(Supplier supplier){System.out.println("---doAjax.supplier:"+supplier);supplier.setSupName("supName1");return supplier;}}
index.jsp 框架測(cè)試
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> </head> <body><form action="supplier/insert.action" method="post">供應(yīng)商名稱:<input type="text" name="supName"><br> <input type="submit" value="ok"></form> </body> </html> json.jsp ?easyUI和jquery測(cè)試
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> </head> <body><form action="supplier/insert.action" method="post">供應(yīng)商名稱:<input type="text" name="supName"><br> <input type="submit" value="ok"></form> </body> </html>
注意,這些配置要根據(jù)自己包名等調(diào)整,dao的實(shí)現(xiàn)類用xml配置了,直接可以實(shí)現(xiàn),不用在寫dao的實(shí)現(xiàn)類,有點(diǎn)方法抽取沒貼出來,不過不影響整合
這個(gè)版本切記在Tomcat7.0以下版本運(yùn)行,8.0會(huì)報(bào)錯(cuò),原因不明。
總結(jié)
以上是生活随笔為你收集整理的ssi整合,即spring、springmvc、mybatis终极整合,包括一些优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏音乐公司
- 下一篇: Java播放歌词同步源码,Android