spring整合mybatis以及配置事务

时间:2019-06-12
本文章向大家介绍spring整合mybatis以及配置事务,主要包括spring整合mybatis以及配置事务使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

提前说明:

  整合目的:使mybatis支持事务代理

  需要做的工作:

    1、将mybatis对象的创建交由spring

      ①配置第三方带有连接池的数据源

      ②spring创建sqlsession对象

      ③mybatis通过映射接口创建对象,spring不支持通过接口创建对象,需要给出解决方案(在整合包)

    2、配置事务

      ①配置事务管理器

      ②配置通知

      ③使用AOP切入

具体步骤:

  1、配置数据源

<!-- 配置数据源 -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/sms"></property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="username" value="root"></property>
        <property name="password" value="1234"></property>
    </bean>

  2、配置会话工厂,用于创建sqlsession

    说明,只要配置了会话工厂,即可获得sqlsession对象(看源码)

<!--配置会话工厂  -->
    <bean name="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据源,用于创建sqlsession -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

  3、配置映射接口扫描包,创建mapper对象

<!-- 配置映射接口扫描包,用于创建mapper对象 -->
    <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="my"></property>
      <!--指定会话工厂--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property> </bean>

  4、配置事务管理器

<!-- 配置事务管理器 -->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

  5、配置通知

<!-- 配置通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="select*" read-only="true" />
            <tx:method name="find*" read-only="true"/>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="query*" read-only="true"/>
            <tx:method name="*" read-only="false"/>
        </tx:attributes>
    </tx:advice>

  6、AOP切入

<!--AOP切入  -->
    <aop:config>
        <!--切入点  -->
        <aop:pointcut expression="execution(* my.service..*.*(..))" id="pc"/>
        <!-- 配置切面 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pc" />
    </aop:config>

原文地址:https://www.cnblogs.com/cdeelen/p/11007961.html