mybatis plus insert返回主键_mybatis采坑记及源码分析

5071da851fd38ad6b6549ac23740bf25.png

问题描述

有些需求,需要把上一步批量操作返回的主键作为下个表的关联使用,这个时候用mybatis批量操作,mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。

问题跟踪

跟踪1

mybatis的主线版本,能够正确返回主键id,主线版本修复了这个问题,并且@Param可以自定义命名

3e9510e904626cf73ca5d33b40083c56.png


可以自己自定义集合属性名字

8fcbc5a2495971bef746527cd80c0fd4.png


执行成功并返回主键id

5629bc52c6fe0de0c4a596efe7590958.png

跟踪2

mybais的3.3.x-3.4.x源码里面判断参数的属性,并设值br/>在这些版本是修复了这个问题,但是还有限制,@Param只能是list或者是colletions或者是array才能返回id

562fadc8dc9cddb1aeba3296697ba9a3.png


接口方法里面的属性必须是list或者是colletions或者是array才能返回id

3d6471a1bc1f431b5b366c81a49955f3.png


批量保存方法for里面的属性是list

8caa211f572fd2553ed6cf6a4e456c0c.png

跟踪3

项目如果用mybatis-plus,MybatisDefaultParameterHandler类已经处理了这种情况,如果是自定义的参数会转换成map,然后根据map再进行转换

053a74121b1ae6d38a78fddcfc9c5223.png


获得参数之后,进行换行处理

3b16eb5ba5f6029e61f4e2d1f6cf40c9.png


获取主键属性,进行设值

3689dbe5ce918095cd3c68a5764bf0b7.png

总结

1、有时候出现问题得查看历史版本,并从提交问题单中找到解决的办法,
2、没有解决的方案,就重写框架代码,比如mybatisplus就是重写了ParameterHandler来进行参数的进一步处理。
3、在项目中如果确实没有好的解决办法,那就暂时放下,有空就不断的寻求最佳解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值