mybatis采坑记及源码分析
问题描述
有些需求,需要把上一步批量操作返回的主键作为下个表的关联使用,这个时候用mybatis批量操作,mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。
问题跟踪
跟踪1
mybatis的主线版本,能够正确返回主键id,主线版本修复了这个问题,并且@Param可以自定义命名
可以自己自定义集合属性名字
执行成功并返回主键id
跟踪2
mybais的3.3.x-3.4.x源码里面判断参数的属性,并设值br/>在这些版本是修复了这个问题,但是还有限制,@Param只能是list或者是colletions或者是array才能返回id
接口方法里面的属性必须是list或者是colletions或者是array才能返回id
批量保存方法for里面的属性是list
跟踪3
项目如果用mybatis-plus,MybatisDefaultParameterHandler类已经处理了这种情况,如果是自定义的参数会转换成map,然后根据map再进行转换
获得参数之后,进行换行处理
获取主键属性,进行设值
总结
1、有时候出现问题得查看历史版本,并从提交问题单中找到解决的办法,
2、没有解决的方案,就重写框架代码,比如mybatisplus就是重写了ParameterHandler来进行参数的进一步处理。
3、在项目中如果确实没有好的解决办法,那就暂时放下,有空就不断的寻求最佳解决方案
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Gartner:2021年IT企业最高战略预测
在前几日召开的2020 Gartner IT Symposium/Xpo大会上,Gartner公布了其对2021年及以后的主要战略预测。会上,研究副总裁兼Gartner研究员Daryl Plummer表示,传统技术已被利用到了极致,正面临重重障碍,未来十年将由创新技术引领。 能够引领未来的技术具有三个关键共性: 能为企业创造更大的创新和更高的效率; 比现有的技术更有效; 对社会产生了变革性的影响。 Gartner的十大战略预测如下: 1. CIO也将是COO 到2024年,25%的传统大型企业CIO将负责数字业务运营,成为“代理COO”。 首席运营官(COO)对于企业数字化转型非常重要,COO了解业务及企业的整个运营生态系统,而CIO对业务的技术有着深入了解,可以通过担当COO角色,将技术和业务融合起来,从而提高企业效率。 2. 工作中的对话将被记录和分析 到2025年,工作中75%的对话将被记录下来并分析,由此发现其中的附加价值或风险。 如今,我们在工作中的交流更多的是在社交软件、云会议上进行,一般,此类工具会保留我们对话的记录。未来,企业将对这些记录进行分析,这可以监督企业和员工遵...
- 下一篇
浅析synchronized底层实现与锁升级过程
在Java中,synchronized关键字是用来控制线程同步的。就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。 那么synchronized具体是怎么做到线程同步的呢?还有锁升级过程的过程是怎样的的?我们来探讨一下。 0x01 synchronized实现细节 1.1 Java代码实现 我们先来了看下如果多线程间竞争共享资源,不采取措施会出现什么情况: publicclassTestSyncimplementsRunnable{privateintcount=100;publicstaticvoidmain(String[]args){ TestSyncts=newTestSync(); Threadt1=newThread(ts,"线程1"); Threadt2=newThread(ts,"线程2"); Threadt3=newThread(ts,"线程3"); t1.start(); t2.start(); t3.start(); }@Override publicvoidrun(){while(true){if(count>0){ coun...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Linux系统CentOS6、CentOS7手动修改IP地址