mybatis数据批量更新

原sql语句:

update zyjd set peopleId=case

when id=1 then   10,

when id=2 then   11 end,

roadgridid =case

when id=1 then   101,

when id=2 then   102 end,

…………

where id=1 or id=2
 sql意思:当id=1的情况下peopleId =10,roadgridid =101,当id=2的情况下peopleId =11,roadgridid =102,等等

mybatis配置文:

<update id="batchUpdate" parameterType="list">

update zyjd

<trim prefix="set" suffixOverrides=",">

<trim prefix="peopleId =case" suffix="end,">

<foreach collection="list" item="i" index="index">

<if test="i.peopleId!=null">

when id=#{i.id} then #{i.peopleId}

</if>

</foreach>

</trim>

<trim prefix=" roadgridid =case" suffix="end,">

<foreach collection="list" item="i" index="index">

<if test="i.roadgridid!=null">

when id=#{i.id} then #{i.roadgridid}

</if>

</foreach>

</trim>

<trim prefix="type =case" suffix="end," >

<foreach collection="list" item="i" index="index">

<if test="i.type!=null">

when id=#{i.id} then #{i.type}

</if>

</foreach>

</trim>

<trim prefix="unitsid =case" suffix="end," >

<foreach collection="list" item="i" index="index">

<if test="i.unitsid!=null">

when id=#{i.id} then #{i.unitsid}

</if>

</foreach>

</trim>

</trim>

where

<foreach collection="list" separator="or" item="i" index="index" >

id=#{i.id}

</foreach>

</update>

mybatis数据批量更新,布布扣,bubuko.com

时间: 2024-10-12 11:08:30

mybatis数据批量更新的相关文章

170829、mybatis使用oracle和mybatis中批量更新

1.数据库连接必须配置:&allowMultiQueries=true(切记一定要加上这个属性,否则会有问题,切记!切记!切记!) 我的配置如下:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 2.批量修改并加判断条件(修改字段可选) <!-- 批量更新 --> <update id="updateMatchs&

Mybatis之批量更新操作

更新单条记录 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 UPDATE course SET name = 'course1' WHERE id in ('id1', 'id2', 'id3); 更新多条记录为多个字段为不同的值 比较普通的写法,是通过循环,依次执行update语句. Mybatis写法如下: <update id="updateBatch"  parameterTy

mybatis 实现批量更新

更新单条记录 1 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 1 UPDATE course SET name = 'course1' WHERE id in ('id1', 'id2', 'id3); 更新多条记录为多个字段为不同的值 比较普通的写法,是通过循环,依次执行update语句. Mybatis写法如下: 1 2 3 4 5 6 7 8 9 <update id="updateBa

thinkphp对180万数据批量更新支持事务回滚

目前测试180万多的数据,大概是正常的,不知道再多了会怎么样了我们要给表改成 innodb类型 干货来了: set_time_limit(0); ini_set("memory_limit","800M");//180万数据  数据越多越消耗内存 $t1 = microtime(true); $Model = M('orderlisttest');//先用 M 函数实例化一个空对象 $rr['goods_tuihuo']=1; $subQuery = $Model-

SpringBoot+Mybatis+Druid批量更新 multi-statement not allow异常

本文链接:https://blog.csdn.net/weixin_43947588/article/details/90109325 注:该文是本博主记录学习之用,没有太多详细的讲解,敬请谅解! 在日常的开发过程中难免会有批量操作的功能,Mybatis集成Druid批量更新时经常会出现Error updating database. Cause: java.sql.SQLException: sql injection violation, multi-statement not allow

mybatis执行批量更新batch update 的方法

1.数据库连接必须配置:&allowMultiQueries=true 我的配置如下:jdbc:mysql://10.20.13.16:3306/CALENDAR?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 2.批量修改并加判断条件(修改字段可选) <!-- 批量更新赛程 --> <update id="updateMatchs" parameterType=&q

mybatis的批量更新实例

近来批量添加,删除,更新用的比较多,单一的删除和更新,操作无法满足企业某些业务的需求,故通过以下示例分享知识: 今天通过更新的例子来说明 演示环境为jdk8,maven环境,ssm框架 请准备好环境,数据表可直接使用 一.准备数据表 CREATE TABLE `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(20) DEFAULT NULL COMMENT '用户名', `s

C# List数据批量更新

针对单条数据一般都是update语句直接更新 例如:update UserTable set UserName='小名'   where userid=xxx 但是如果是针对List数据组进行更新的话不外乎两种 1.程序for.foreach.while循环语句然后多次请求数据库更新(这种在这里不多做解释,因为基本上都知道这种方法) 2.重点说下下面这种方式:通过XML的方式在数据库进行批量的更新 1.建立ListToXML方法 /// <summary> /// 使用反射把List<T

mybatis数据批量插入

首先看看批处理的mapper.xml文件 <insert id="insertbatch" parameterType="java.util.List"> <selectKey keyProperty="fetchTime" order="BEFORE" resultType="java.lang.String"> SELECT CURRENT_TIMESTAMP() </se