设为首页 收藏本站
查看: 1128|回复: 0

[经验分享] Spring3.0和Mybatis的集成,含事务配置

[复制链接]

尚未签到

发表于 2016-11-27 11:00:43 | 显示全部楼层 |阅读模式
相对于hibernate来说,比较喜欢mybatis一些。虽然mybatis没有hibernate那么成熟,但可以手动控制sql语句怎么长。废话不多说,上代码。欢迎拍砖。





Xml代码  
<?xml version="1.0" encoding="UTF-8"?>  
<beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
    <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                <value>classpath:spring-jdbc.properties</value>  
            </list>  
        </property>  
    </bean>  
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <property name="driverClassName" value="${jdbc.driver}">  
        </property>  
        <property name="url" value="${jdbc.url}">  
        </property>  
        <property name="username" value="${jdbc.username}">  
        </property>  
        <property name="password" value="${jdbc.password}">  
        </property>  
    </bean>  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>  
        <property name="dataSource" ref="dataSource"></property>  
        <property name="mapperLocations" value="classpath*:mappers-*.xml"></property>  
    </bean>  
    <!-- 由spring管理mybatis的事物 -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource"></property>  
    </bean>  
    <!-- 定义拦截器,用来指定事物属性,级别,和异常处理 -->  
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
        <property name="transactionManager" ref="transactionManager"></property>  
        <property name="transactionAttributes">  
            <props>  
                <!-- PROPAGATION_SUPPORTS: 如果已经存在事务,则加入事务;如果没有事务,则以非事务的方式执行;   
                PROPAGATION_MANDATORY: 使用当前事务, 如果没有, 则抛出异常;   
                PROPAGATION_REQUIRED: 新建事务,如果当前有事务, 则挂起; P   
                ROPAGATION_NOT_SUPPORTED:以非事务的方式执行, 如果当前有事务, 则挂起;   
                PROPAGATION_NEVER:以非事务的方式执行, 如果当前有事务,则抛出异常;   
                +/-Exception</prop> + 表示异常出现时事物提交 - 表示异常出现时事务回滚 -->  
                <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop>  
                <prop key="del*"> PROPAGATION_SUPPORTS</prop>  
                <prop key="update*">PROPAGATION_REQUIRED</prop>  
                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>  
            </props>  
        </property>  
    </bean>  
    <!-- 用来定义那些类需要采用事物管理 spring 事物的动态代理类 BeanNameAutoProxyCreator 根据类名自动代理,接受表达式 -->  
    <bean id="BeanProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        <property name="beanNames">  
            <!-- 对类名以MybatisService结尾的类进行代理 -->  
            <value>*MybatisService</value>  
        </property>  
        <!-- 对代理类进行加载拦截器(实现通知的过程) -->  
        <property name="interceptorNames">  
            <list>  
                <value>transactionInterceptor</value>  
            </list>  
        </property>  
    </bean>  
</beans>  




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



Java代码  
jdbc.driver=oracle.jdbc.driver.OracleDriver   
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl   
jdbc.username=admin   
jdbc.password=pwd  

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=admin
jdbc.password=pwd



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

Xml代码  
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE configuration   
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"   
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">  
<configuration>  
    <!-- 要在environment之前 -->  
    <typeAliases>  
        <typeAlias type="com.jacarri.document.vo.WriteFileVo" alias="WriteFileVo" />  
    </typeAliases>  
    <plugins>  
        <plugin interceptor="com.jacarri.common.filter.PaginationInterceptor" />  
        <plugin interceptor="com.jacarri.common.filter.ColumnsControlInterceptor" />  
    </plugins>  
</configuration>  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<!-- 要在environment之前 -->
<typeAliases>
<typeAlias type="com.jacarri.document.vo.WriteFileVo" alias="WriteFileVo" />
</typeAliases>
<plugins>
<plugin interceptor="com.jacarri.common.filter.PaginationInterceptor" />
<plugin interceptor="com.jacarri.common.filter.ColumnsControlInterceptor" />
</plugins>
</configuration>备注:两个interceptor,第一个是用来分页的,第二个是用来控制select语句中列名的,就不上代码了。想要的可以给我发消息。至于WriteFileVo就是一个普通的bean,如果你要用到缓存,记得bean要实现java.io.Serializable。





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





Java代码  
antlr-2.7.6.jar   
aopalliance.jar   
asm-2.2.3.jar   
asm-commons-2.2.3.jar   
backport-util-concurrent-3.1.jar   
cglib-nodep-2.1_3.jar   
commons-collections-3.1.jar   
commons-dbcp-1.2.1.jar   
commons-fileupload-1.2.1.jar   
commons-io-1.3.2.jar   
commons-lang-2.3.jar   
commons-logging-1.1.1.jar   
commons-pool-1.2.jar   
dom4j-1.6.1.jar   
ehcache-1.5.0.jar   
freemarker-2.3.15.jar   
jakarta-oro-2.0.8.jar   
javassist-3.12.0.GA.jar   
json-lib-2.1-jdk15.jar   
jta.jar   
log4j-1.2.16.jar   
mybatis-3.0.6-SNAPSHOT.jar   
mybatis-spring-1.0.2-SNAPSHOT.jar   
mysql-connector-java-5.1.17-bin.jar   
ognl-2.7.3.jar   
org.springframework.aop-3.1.0.M2.jar   
org.springframework.asm-3.1.0.M2.jar   
org.springframework.beans-3.1.0.M2.jar   
org.springframework.context-3.1.0.M2.jar   
org.springframework.core-3.1.0.M2.jar   
org.springframework.expression-3.1.0.M2.jar   
org.springframework.jdbc-3.1.0.M2.jar   
org.springframework.orm-3.1.0.M2.jar   
org.springframework.transaction-3.1.0.M2.jar   
org.springframework.web-3.1.0.M2.jar   
struts2-config-browser-plugin-2.2.1.jar   
struts2-convention-plugin-2.2.1.jar   
struts2-core-2.2.1.jar   
struts2-json-plugin-2.2.1.jar   
struts2-spring-plugin-2.2.1.jar   
xwork-core-2.2.1.jar

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306124-1-1.html 上篇帖子: mybatis批量查询以及更新的写法及XML 下篇帖子: Mybatis的映射器实例和XML映射配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表