使用事务控制,在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
然后前台的请求是这样的,我用个工具测的。
好了,看下页面效果。我做了个动态图,效果如下:
拖拽排序表格的
拖拽排序树的