MybatisPlus+ShardingJDBC批量插入返回主键为空(附源码解析)

项目背景:

项目采用SpringBoot+Mybatis-Plus+ShardingJDBC进行数据库插入操作,ShardingJDBC使用了其分库分表、读写分离及影子库的功能。

问题发现:

在一次新增操作时,t1表新增或更新多条数据后t2表需根据t1的主键先删除表中数据后再进行批量插入新的配置数据,通过断点发现t1表插入成功后未返回主键ID。 贴上涉事代码块:

List<MemberRightShowConfig> memberRightShowConfigList = mrsRightDetailVO.getShowConfigs().parallelStream()         
....                                                                                                        
.collect(Collectors.toList());                                                                                                       
.....            
saveOrUpdateShowConfigs = memberRightShowConfigService.saveBatch(memberRightShowConfigList);                                                                                                      ...           
for (int i = 0; i < memberRightShowConfigList.size(); i++) {                            
	MemberRightShowConfig memberRightShowConfig = memberRightShowConfigList.get(i);   
	Long showConfigId = memberRightShowConfig.getId()                          
	...                          
	memberRightTemplateImplService
	.remove(new QueryWrapper<MemberRightTemplateImpl>()
	.eq("show_config_id", showConfigId));          
}

问题分析:

猜想1:因事务导致的批量插入不返回主键

猜想验证:

取消事务进行插入后,仍出现主键不返回的相同问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值