seata:
enable-auto-data-source-proxy: false
spring:
datasource:
dynamic:
primary: master
strict: true
#开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭
seata: true
#支持XA及AT模式,默认AT
seata-mode: AT
@Log4j2
@Service
public class TestInfoCustom3541ServiceImpl extends ServiceImpl<TestInfoMapper, TestInfo> implements TestInfoService {
@Override
@GlobalTransactional(rollbackFor = Exception.class)
public void doBatch() {
List<TestInfo> addList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
TestInfo testInfo = new TestInfo();
testInfo.setTitle("批量测试标题-" + i)
.setIsDeleted(true);
addList.add(testInfo);
# 单条执行(无事务)
//this.save(testInfo);
}
# mp自带了 @Transactional(rollbackFor = Exception.class)
this.saveBatch(addList);
throw new CustomClientException("主动抛出异常测试");
}
}
WARN-> union.system.test.service.impl.TestInfoCustom3541ServiceImpl.executeBatch[189]-> SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@749ad02c] Transaction not enabled
尝试更换一下这个呢
seata:
- enable-auto-data-source-proxy: false
+ enableAutoDataSourceProxy: false
在 Spring Boot 2 中集成 Seata、Mybatis-Plus 以及多数据源时,如果碰到批量操作事务不兼容的问题,很可能是由于事务代理配置不正确或者 Mybatis-Plus 批量操作的实现与 Seata 的事务管理不兼容。以下是一些可能的解决方案和检查点:
确保 Seata 客户端正确配置
file.conf
和 registry.conf
配置文件,确保 Seata 客户端能够正确连接到 Seata 服务端。application.yml
中,确保 Seata 的相关配置正确,特别是 seata.enable-auto-data-source-proxy
和 spring.datasource.dynamic.seata
的设置。检查数据源代理
seata.enable-auto-data-source-proxy: false
,那么需要确保手动为每个数据源配置了 Seata 代理。dynamic-datasource-spring-boot-starter
,并且设置了 spring.datasource.dynamic.seata: true
,理论上应该已经启用了数据源代理。检查 Mybatis-Plus 的批量操作实现
saveBatch
方法可能并没有在内部使用 Seata 的事务管理。这可能需要查看 Mybatis-Plus 的源码来确定。saveBatch
方法内部没有使用 Seata 的事务管理,那么可能需要自定义实现或者使用其他方式来确保批量操作在 Seata 的事务中执行。自定义事务管理
检查日志和异常
Transaction not enabled
这样的警告信息,它可能指示了事务没有被正确开启或管理。更新和同步依赖
dynamic-datasource-spring-boot-starter
的版本兼容性。参考官方文档和社区
dynamic-datasource-spring-boot-starter
的官方文档,看看是否有关于集成和配置的详细说明。简化问题
请注意,由于我没有直接访问你的代码和环境,所以上述建议可能需要根据你的具体情况进行调整。希望这些建议能够帮助你解决问题。
Mybatis-Plus 是一个 MyBatis 增强工具包,简化 CRUD 操作。 启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。 Maven 坐标 http://search.maven.org/#search%7Cga%7C1%7Cmybatis-plus com.baomidou mybatis-plus maven 官方最新版本号为
mybatis分页插件MicroPageInterceptor 特点: 1, 支持mysql和oracle分页 2, 不必在xml编写统计count的sql 3, 使用RowBounds子类PageInfo作为分页信息和记录总数的载体,不必像其他分页插件那样要求输入输出参数必须继承特殊父类。 4, 可在PageInfo中填写自定义排序sql串,提高查询性能和排序灵活性 jar已经提交mav
1.介绍: MyBatis generator plus 基于mybatis-generator-core v.1.3.2 扩展,增加如下主要特性: 1.生成支持Oracle、Mysql、Sqlserver分页查询的代码: //分页查询demoOperateLogExample relationshipsExample = new OperateLogExample();relationships
本文向大家介绍Mybatis-Plus和Mybatis的区别详解,包括了Mybatis-Plus和Mybatis的区别详解的使用技巧和注意事项,需要的朋友参考一下 原文:https://blog.csdn.net/qq_34508530/article/details/88943858 . 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。 通俗来
本文向大家介绍浅析Mybatis Plus和Mybatis的区别,包括了浅析Mybatis Plus和Mybatis的区别的使用技巧和注意事项,需要的朋友参考一下 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。 通俗来讲—— MyBatis:一种操作数据库的框架,提供一种Mapper类,支持让你用java代码进行增删改查的数据库操作,省去了每次
1. 前言 在spring-boot 集成 MyBatis小节中,我们介绍了如何在 spring-boot 中集成 MyBatis,MyBatis 虽然灵活,但是对于业务开发还略显不够。MyBatis-Plus 是国内开发者为 MyBatis 定制的一款增强工具,在不侵入 MyBatis 的基础上能够快速地提升 MyBatis 的开发能力,为开发者节省大量的时间。 提示: 本小节建立在spring