spring boot整合mybatis事务配置
spring boot整合mybatis事务配置
接着上一篇文章,spring boot整合mybatis,需要配置事务。
只需要修改两个地方
一,service
事务主要是配置在处理业务逻辑的service层。在设计service层的时候,应该合理的抽象出方法包含的内容。然后将方法用@Trasactional注解注释,默认的话在抛出Exception.class异常的时候,就会触发方法中所有数据库操作回滚,当然这指的是增、删、改。
当然,@Transational方法是可以带参数的,具体的参数解释如下:
属性 | 类型 | 描述 |
---|---|---|
value | String | 可选的限定描述符,指定使用的事务管理器 |
propagation | enum: Propagation | 可选的事务传播行为设置 |
isolation | enum: Isolation | 可选的事务隔离级别设置 |
readOnly | boolean | 读写或只读事务,默认读写 |
timeout | int (in seconds granularity) | 事务超时时间设置 |
rollbackFor | Class对象数组,必须继承自Throwable | 导致事务回滚的异常类数组 |
rollbackForClassName | 类名数组,必须继承自Throwable | 导致事务回滚的异常类名字数组 |
noRollbackFor | Class对象数组,必须继承自Throwable | 不会导致事务回滚的异常类数组 |
noRollbackForClassName | 类名数组,必须继承自Throwable | 不会导致事务回滚的异常类名字数组 |
示例代码
@Service public class TSUserServiceImpl implements TSUserService{ @Autowired private TSUserDao tSUserDao; @Transactional public int insertTSUser(TSUser value){ return tSUserDao.insertTSUser(value); } @Transactional public int insertNonEmptyTSUser(TSUser value){ return tSUserDao.insertNonEmptyTSUser(value); } @Transactional public int insertTSUserByBatch(List<TSUser> value){ return tSUserDao.insertTSUserByBatch(value); } @Transactional public int deleteTSUserById(String id){ return tSUserDao.deleteTSUserById(id); } @Transactional public int deleteTSUser(Assist assist){ return tSUserDao.deleteTSUser(assist); } @Transactional public int updateTSUserById(TSUser enti){ return tSUserDao.updateTSUserById(enti); } }
二,启动类
开启事务
最后你要在Application类中开启事务管理,开启事务管理很简单,只需要@EnableTransactionManagement注解就行
@SpringBootApplication @EnableTransactionManagement public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
三,事务传播行为
关于propagation属性的7个传播行为
REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。这是默认值。
SUPPORTS:指定当前方法加入当前事务环境,如果当前没有事务,就以非事务方式执行。
MANDATORY:指定当前方法必须加入当前事务环境,如果当前没有事务,就抛出异常。
REQUIRES_NEW:指定当前方法总是会为自己发起一个新的事务,如果发现当前方法已运行在一个事务中,则原有事务被挂起,自己创建一个属于自己的事务,
一直我自己这个方法commit结束,原先的事务才会恢复执行。
NOT_SUPPORTED:指定当前方法以非事务方式执行操作,如果当前存在事务,就把当前事务挂起,等我以非事务的状态运行完,再继续原来的事务。
NEVER:指定当前方法绝对不能在事务范围内执行,如果方法在某个事务范围内执行,容器就抛异常,只有没关联到事务,才正常执行。
NESTED:指定当前方法执行时, 如果已经有一个事务存在,则运行在这个嵌套的事务中.如果当前环境没有运行的事务,就新建一个事务,
并与父事务相互独立,这个事务拥有多个可以回滚的保证点。就是指我自己内部事务回滚不会对外部事务造成影响,只对DataSourceTransactionManager事务管理器起效。
REQUIRED是默认值,示例代码中就没有写,也就是说service实现类话可以这样写
@Service public class TSUserServiceImpl implements TSUserService{ @Autowired private TSUserDao tSUserDao; @Transactional public int insertTSUser(TSUser value){ return tSUserDao.insertTSUser(value); } @Transactional(propagation = Propagation.REQUIRED) public int insertNonEmptyTSUser(TSUser value){ return tSUserDao.insertNonEmptyTSUser(value); } @Transactional(propagation = Propagation.REQUIRED) public int insertTSUserByBatch(List<TSUser> value){ return tSUserDao.insertTSUserByBatch(value); } @Transactional(propagation = Propagation.REQUIRED) public int deleteTSUserById(String id){ return tSUserDao.deleteTSUserById(id); } @Transactional(propagation = Propagation.REQUIRED) public int deleteTSUser(Assist assist){ return tSUserDao.deleteTSUser(assist); } @Transactional(propagation = Propagation.REQUIRED) public int updateTSUserById(TSUser enti){ return tSUserDao.updateTSUserById(enti); } }
具体情况视需求而定,源代码下载
阅读更多- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- springboot整合mybatis注解版与XML配置版
- spring boot配置mybatis和事务管理
- spring boot配置mybatis和事务管理
- SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置
- Spring boot入门五 spring mvc spring boot mybatis配置整合
- spring boot配置mybatis和事务管理
- spring-boot | 使员Druid 整合Mybatis 最简配置多数据源
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- springboot整合mybatis,动态数据源配置
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- spring-boot 整合mybatis 配置 可以发布到tomcat中运行
- Spring boot入门五 spring mvc spring boot mybatis配置整合
- SpringBoot整合MyBatis(包含热部署及其JSP配置详解)
- spring boot配置mybatis和事务管理
- springboot整合mybatis,及其事物配置
- SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置
- Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)
- Springboot整合mybatis并配置redis缓存