Spring3.0和Mybatis的集成,含事务配置

本文详细介绍如何将MyBatis整合到Spring框架中,并通过具体示例代码展示配置过程,包括属性配置、数据源设置、事务管理等核心环节。

[2012年3月13日12:11:57 add  如果不想CTRL+C CTRL+V只想看效果的同志请移步至http://code.google.com/p/ssm-study/]

 

  相对于hibernate来说,比较喜欢mybatis一些。虽然mybatis没有hibernate那么成熟,但可以手动控制sql语句怎么长。废话不多说,上代码。欢迎拍砖。

 

 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.     <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  6.         <property name="locations">  
  7.             <list>  
  8.                 <value>classpath:spring-jdbc.properties</value>  
  9.             </list>  
  10.         </property>  
  11.     </bean>  
  12.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  13.         <property name="driverClassName" value="${jdbc.driver}">  
  14.         </property>  
  15.         <property name="url" value="${jdbc.url}">  
  16.         </property>  
  17.         <property name="username" value="${jdbc.username}">  
  18.         </property>  
  19.         <property name="password" value="${jdbc.password}">  
  20.         </property>  
  21.     </bean>  
  22.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  23.         <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>  
  24.         <property name="dataSource" ref="dataSource"></property>  
  25.         <property name="mapperLocations" value="classpath*:mappers-*.xml"></property>  
  26.     </bean>  
  27.     <!-- 由spring管理mybatis的事物 -->  
  28.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  29.         <property name="dataSource" ref="dataSource"></property>  
  30.     </bean>  
  31.     <!-- 定义拦截器,用来指定事物属性,级别,和异常处理 -->  
  32.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
  33.         <property name="transactionManager" ref="transactionManager"></property>  
  34.         <property name="transactionAttributes">  
  35.             <props>  
  36.                 <!-- PROPAGATION_SUPPORTS: 如果已经存在事务,则加入事务;如果没有事务,则以非事务的方式执行;   
  37.                 PROPAGATION_MANDATORY: 使用当前事务, 如果没有, 则抛出异常;   
  38.                 PROPAGATION_REQUIRED: 新建事务,如果当前有事务, 则挂起; P  
  39.                 ROPAGATION_NOT_SUPPORTED:以非事务的方式执行, 如果当前有事务, 则挂起;   
  40.                 PROPAGATION_NEVER:以非事务的方式执行, 如果当前有事务,则抛出异常;   
  41.                 +/-Exception</prop> + 表示异常出现时事物提交 - 表示异常出现时事务回滚 -->  
  42.                 <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>  
  43.                 <prop key="del*"> PROPAGATION_SUPPORTS</prop>  
  44.                 <prop key="update*">PROPAGATION_REQUIRED</prop>  
  45.                 <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>  
  46.             </props>  
  47.         </property>  
  48.     </bean>  
  49.     <!-- 用来定义那些类需要采用事物管理 spring 事物的动态代理类 BeanNameAutoProxyCreator 根据类名自动代理,接受表达式 -->  
  50.     <bean id="BeanProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  51.         <property name="beanNames">  
  52.             <!-- 对类名以MybatisService结尾的类进行代理 -->  
  53.             <value>*MybatisService</value>  
  54.         </property>  
  55.         <!-- 对代理类进行加载拦截器(实现通知的过程) -->  
  56.         <property name="interceptorNames">  
  57.             <list>  
  58.                 <value>transactionInterceptor</value>  
  59.             </list>  
  60.         </property>  
  61.     </bean>  
  62. </beans>  

 

 

 

 鉴于网络参数和鉴权信息是经常变的,所以单独拿出来放在属性文件中了。spring-jdbc.properties内容如下:

 

Java代码   收藏代码
  1. jdbc.driver=oracle.jdbc.driver.OracleDriver  
  2. jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl  
  3. jdbc.username=admin  
  4. jdbc.password=pwd  

 

 

 Mybatis中的拦截器和一些bean的配置信息就放在SqlMapConfig.xml这个文件中了

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration  
  3. PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"  
  4. "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">  
  5. <configuration>  
  6.     <!-- 要在environment之前 -->  
  7.     <typeAliases>  
  8.         <typeAlias type="com.jacarri.document.vo.WriteFileVo" alias="WriteFileVo" />  
  9.     </typeAliases>  
  10.     <plugins>  
  11.         <plugin interceptor="com.jacarri.common.filter.PaginationInterceptor" />  
  12.         <plugin interceptor="com.jacarri.common.filter.ColumnsControlInterceptor" />  
  13.     </plugins>  
  14. </configuration>  

备注:两个interceptor,第一个是用来分页的,第二个是用来控制select语句中列名的,就不上代码了。想要的可以给我发消息。至于WriteFileVo就是一个普通的bean,如果你要用到缓存,记得bean要实现java.io.Serializable。

 

 

同时附上jar包清单(该清单是在搭建struts2+Spring3+Mybatis框架时用到的清单)

 

 

Java代码   收藏代码
  1. antlr-2.7.6.jar  
  2. aopalliance.jar  
  3. asm-2.2.3.jar  
  4. asm-commons-2.2.3.jar  
  5. backport-util-concurrent-3.1.jar  
  6. cglib-nodep-2.1_3.jar  
  7. commons-collections-3.1.jar  
  8. commons-dbcp-1.2.1.jar  
  9. commons-fileupload-1.2.1.jar  
  10. commons-io-1.3.2.jar  
  11. commons-lang-2.3.jar  
  12. commons-logging-1.1.1.jar  
  13. commons-pool-1.2.jar  
  14. dom4j-1.6.1.jar  
  15. ehcache-1.5.0.jar  
  16. freemarker-2.3.15.jar  
  17. jakarta-oro-2.0.8.jar  
  18. javassist-3.12.0.GA.jar  
  19. json-lib-2.1-jdk15.jar  
  20. jta.jar  
  21. log4j-1.2.16.jar  
  22. mybatis-3.0.6-SNAPSHOT.jar  
  23. mybatis-spring-1.0.2-SNAPSHOT.jar  
  24. mysql-connector-java-5.1.17-bin.jar  
  25. ognl-2.7.3.jar  
  26. org.springframework.aop-3.1.0.M2.jar  
  27. org.springframework.asm-3.1.0.M2.jar  
  28. org.springframework.beans-3.1.0.M2.jar  
  29. org.springframework.context-3.1.0.M2.jar  
  30. org.springframework.core-3.1.0.M2.jar  
  31. org.springframework.expression-3.1.0.M2.jar  
  32. org.springframework.jdbc-3.1.0.M2.jar  
  33. org.springframework.orm-3.1.0.M2.jar  
  34. org.springframework.transaction-3.1.0.M2.jar  
  35. org.springframework.web-3.1.0.M2.jar  
  36. struts2-config-browser-plugin-2.2.1.jar  
  37. struts2-convention-plugin-2.2.1.jar  
  38. struts2-core-2.2.1.jar  
  39. struts2-json-plugin-2.2.1.jar  
  40. struts2-spring-plugin-2.2.1.jar  
  41. xwork-core-2.2.1.jar  

 

 SVN地址    http://myfirst-cmcc.googlecode.com/svn/demo/ssm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值