mybatis采坑记及源码分析

mybatis采坑记及源码分析

问题描述

有些需求,须要把上一步批量操做返回的主键做为下个表的关联使用,这个时候用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采坑记及源码分析ide

跟踪3

项目若是用mybatis-plus,MybatisDefaultParameterHandler类已经处理了这种状况,若是是自定义的参数会转换成map,而后根据map再进行转换
mybatis采坑记及源码分析
得到参数以后,进行换行处理
mybatis采坑记及源码分析
获取主键属性,进行设值
mybatis采坑记及源码分析源码分析

总结

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

相关文章
相关标签/搜索