Mybatis框架下批量修改数据库,你要绕过这些坑

两毛五哥哥

12-29 22:53

avatar

开发中,批量修改数据应该是很常见的功能需求。今晚开发时配置批量修改功能遇到很多坑,浪费了很多时间,特此记录下来,跟大家分享,今天你看到的坑我都为您铺平了。

批量执行sql语句,无非就是批量修改和批量添加。我用现在使用量最多的框架mybatis写一个修改功能给大家做个demo看。其他的自己举一反三,我不在这浪费笔墨了,一样的逻辑。

文章概览:

使用事务控制,在service层控制进行循环修改。

mybatis动态sql语句进行批量修改。

透过现象看本质就是要实现以下效果

批量的sql语句一次执行

第一种:使用事务控制,在service层控制进行循环修改。容易想到,容易操作,但是要发送多次sql请求,浪费时间和性能。

这个是一个树拖拽排序的后台代码:

sql就是最简单的update语句

service用事务控制,循环执行插入就行

这个很简单,很好理解,不多说。注意事务控制就行。

第二种:mybatis动态sql语句进行批量修改。一次性把要执行的sql语句发给数据库,大量提示性能,推荐使用。这个是拖拽表格进行排序功能的。

mapper的动态sql语句

这个是一个拖拽表格时,批量修改用户表的动态sql语句。配置文件中,item指明当前遍历的对象,collection指明传入的集合类型,open指明迭代以什么符号开始,separator指明迭代间用什么符号分割,close指明迭代用什么符号结束,还有index可以指明迭代的索引。

我用的数据库是mysql,注意看上边的配置,oracle数据库的配置略微不同。不同如下:

oracle数据库的配置

mysql数据库的配置


注意:mysql数据库连接必须配置:&allowMultiQueries=true,而且这个参数必须配置到最前边

还有注意一定要转义字符,一定要看看有空格吗,多个空格能让你找一个月都不知道错在哪

我也是日了狗了,就因为这个参数配到了后边,浪费了我两个小时找 bug,完了到处都没问题,我都tm怀疑人生了。

&allowMultiQueries=true放到最前边,而且要注意你的文件使用转义字符了吗,不要有多余的空格

一定写成如下

jdbc\:mysql\://localhost\:3306/open?allowMultiQueries\=true&useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull

然后其他的java代码就简单了:

mapper

service

controller

然后前台的请求是这样的,我用个工具测的。

好了,看下页面效果。我做了个动态图,效果如下:

拖拽排序表格的

拖拽排序树的

其他方法,比如写存储过程我就不介绍了,常用上边的就够了。喜欢编程的可以点一下关注。看完

了不要白看,我希望你提问一个问题,可以是任意问题,可以不是编程的问题,没准会有意想不到的答案,一个问题结交一群朋友也没准哦!

--------------------- 本文来自 师太,老衲把持不住了 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u011277123/article/details/54374833?utm_source=copy

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值