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
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP count()函数讲解
- Laravel中9个不经常用的小技巧汇总
- PHP simplexml_load_string()函数实例讲解
- php文件操作之文件写入字符串、数组的方法分析
- php xhprof使用实例详解
- PHP获取远程http或ftp文件的md5值的方法
- PHP addslashes()函数讲解
- PHP+swoole+linux实现系统监控和性能优化操作示例
- PHP中PCRE正则解析代码详解
- tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
- 使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
- python 抓取知乎指定回答下视频的方法
- 基于python实现计算两组数据P值
- PHP getNamespaces()函数讲解
- OpenCV 使用imread()函数读取图片的六种正确姿势