mybatis-plus事务处理

mybatis-plus事务处理

开启事务

  1. 开启事务管理 @EnableTransactionManagement
  2. 开启事务 @Transactional(rollbackFor = Exception.class)
  3. 事务处理
    • 常规运行事务
      1. SQLException不回滚
      2. 其他常规异常回滚
        • 捕获异常处理
          try{}
          catch(){
          //设置回滚,此处抛出异常不会回滚
          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
          }
        • 配置修改为
          spring.datasource.hikari.data-source-properties.useLocalTransactionState=false
  4. 开启缓存导致异常回滚问题
    datasource:
    hikari:
      data-source-properties:
        cachePrepStmts: true
        prepStmtCacheSize: 250
        prepStmtCacheSqlLimit: 2048
        useServerPrepStmts: true

    推测可能是preStatement字符串长度问题,将prepStmtCacheSqlLimit值扩大能有效缓解该问题。