Mybatis采坑记及源码分析

问题描述

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

问题跟踪

跟踪1

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

mybatis采坑记及源码分析


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

mybatis采坑记及源码分析


执行成功并返回主键id

mybatis采坑记及源码分析

跟踪2

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

mybatis采坑记及源码分析


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

mybatis采坑记及源码分析


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

mybatis采坑记及源码分析

跟踪3

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

mybatis采坑记及源码分析


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

mybatis采坑记及源码分析


获取主键属性,进行设值

mybatis采坑记及源码分析

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值