批量更新同一张表的数据
更新多条数据,每条数据都不一样
通常需要一次更新多条数据有两个方式
这两种方式各有利弊,程序中for循环实现就不说了,这里主要介绍第二种方式在fluent mybatis中的实现,以及和mybatis实现的对比。
java中for循环实现方式
这种方式在大批量更新时, 最大的问题就是效率,逐条更新,每次都会连接数据库,然后更新,再释放连接资源。
一条SQL,服务端逐条更新
mybatis实现方式
通过mybatis提供的循环标签,一次构造多条update的sql,一次提交服务器进行执行。
定义Mapper
执行测试验证
使用FluentMybatis实现方式
使用fluent mybatis进行批量更新很简单,只需要在#updateBy方法中传入 IUpdate数组即可
使用mysql的Case When then方式更新
上面的sql语句使用mysql的case when then语法实现的批量更新3条记录,并且根据id的值不同,设置不同的address值。
mybatis原生实现方式
如果使用mybatis的xml语法来实现,xml文件就需要表达为下面方式:
使用Fluent Mybatis实现方式
只需要在applyFunc中传入case when语句,和对应的参数(对应case when语句中的预编译占位符'?')
如果业务入口传入的是Entity List或者Map List,可以使用java8的stream功能处理成数组,示例如下:
使用Fluent Mybatis无需额外编写xml文件和mapper(使用框架生成的Mapper文件就够了)。在业务逻辑上不至于因为有额外的xml文件,而产生割裂感。
批量更新不同的表数据
上面的例子使用mybatis和fluent mybatis演示的如果通过不同方法批量更新同一张表的数据,在fluent mybatis的更新其实不限定于同一张表, 在#updateBy(IUpdate... updates)函数可以传入任意表更新.
示例更新了2张表: student 和 home_address
*** 感谢网友 伦子伦子 提供的建议 ***
【小应用】尚学堂-javaEEjava服务器端小应用-Java应用servlet-2021年最新版服务器应用-Java小白必看视频,通俗易懂的java服务器应用
2021年最新版SpringMVC视频教程_3天学会SpringMVC框架精品全套教程_SpringMVC框架注解方式搭建环境_SpringMVC框架配置原理
【分享源码】尚学堂2021年最新免费spring框架3天学会SpringMVC框架特选教程_JavaEE进阶必备框架讲解_Spring框架入门到实战_小白必看
【java开发项目】尚学堂java项目开发数字货币项目-超级详细新手小白必看-基于Java开发的货币交易项目_基于SpringCloudAlibaba微服务开发
【java项目练习】java-尚学堂高淇老师讲解java项目开发-打飞机游戏作为项目-java学习入门级练手项目新手小白必看视频-超级详细超级简单易懂的项目
作者:稻草江南 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。