mybatis-plus事务处理
开启事务
- 开启事务管理
@EnableTransactionManagement
- 开启事务
@Transactional(rollbackFor = Exception.class)
- 事务处理
- 常规运行事务
- SQLException不回滚
- 其他常规异常回滚
- 捕获异常处理
try{} catch(){ //设置回滚,此处抛出异常不会回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); }
- 配置修改为
spring.datasource.hikari.data-source-properties.useLocalTransactionState=false
- 捕获异常处理
- 常规运行事务
- 开启缓存导致异常回滚问题
datasource: hikari: data-source-properties: cachePrepStmts: true prepStmtCacheSize: 250 prepStmtCacheSqlLimit: 2048 useServerPrepStmts: true
推测可能是preStatement字符串长度问题,将prepStmtCacheSqlLimit值扩大能有效缓解该问题。