MyBatis批量更新
来源:互联网 发布:浙江诸暨淘宝司法拍卖 编辑:程序博客网 时间:2024/06/08 11:46
问题:在项目中遇到需要同时更新字典表多个键的值,而字典表中多个键是由同一个字段保存的,问题就变成了如何根据同一个字段的不同属性更新对应的值,解决方法如下。
1.一次执行多条sql语句
需要在jdbc添加中allowMultiQueries=true
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
然后就可以在mapper映射文件中在同一个方法中写多条sql语句,多条sql语句中间用分号隔开
比如:<update id="updateState"> update td_examinfo set exam_state=2 where now() > exam_examStartTime and exam_examEndTime > now(); update td_examinfo set exam_state=3 where now() > exam_examEndTime </update>
经测试,方法的执行结果取决于多条sql执行结果的逻辑与,即有一条失败方法执行失败,但执行成功的并不会做回滚操作,所以这种方法不具备事务属性。
2.使用case when then end
<update id="updateValuesBykeys" parameterType="com.haha.TestDto"> UPDATE dict SET `value` = CASE <if test="freeCount != null"> WHEN `key` = 'free_count' THEN #{freeCount} </if> <if test="rate != null"> WHEN `key` = 'rate' THEN #{rate} </if> <if test="singleMin != null"> WHEN `key` = 'single_min' THEN #{singleMin} </if> <if test="singleMax != null"> WHEN `key` = 'single_max' THEN #{singleMax} </if> <if test="freeCount != null or rate != null or singleMin != null or singleMax != null"> END </if> where `key` IN ('free_count','rate','single_min','single_max') </update>
0 0
- Mybatis 批量增加,批量更新
- Mybatis 批量插入、批量更新
- Mybatis批量更新
- Mybatis批量更新
- Mybatis批量更新
- mybatis 批量更新
- mybatis 批量更新
- mybatis 批量更新
- Mybatis批量更新
- Mybatis批量更新
- Mybatis批量更新数据
- Mybatis批量更新
- mybatis批量更新
- Mysql+Mybatis批量更新
- Mybatis批量更新数据
- MyBatis批量新增、更新
- Mybatis批量更新数据
- Mybatis的批量更新
- 第十三周项目4每对顶点之间的最短路径
- servlet学习笔记1
- 第十四周项目2-二叉树排序树中查找的路径
- linux grep命令详解
- django 环境搭建
- MyBatis批量更新
- maven安装配置
- centos 7 32位下载地址
- android怎么获得,api的debug签名
- Android按钮状态的切换
- ExtJS之Ext.Ajax.request用法详解
- Java PrintWriter无法写入的问题
- MTK源码编译 [gcc]: unknown (64-bit) [FAIL]
- wingIDE5切换python版本