2023年8月3日发(作者:)
mybatis批量更新update详解1 更新单条记录
UPDATE course SET name = 'course1' WHEREid = 'id1';2 更新多条记录的同⼀个字段为同⼀个值 UPDATE course SET name='course1' WHERE id in('id1','id2','id3);3 更新多条记录为多个字段为不同的值⽐较普通的写法,是通过循环,依次执⾏update语句。Mybatis写法如下:
⼀条记录update⼀次,性能⽐较差,容易造成阻塞。MySQL没有提供直接的⽅法来实现批量更新,但可以使⽤case when语法来实现这个功能。 UPDATE course SET name = CASE id
WHEN 1 THEN 'name1' WHEN 2 THEN 'name2' WHEN 3 THEN 'name3' END,
title = CASE id
WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3' ENDWHERE id IN (1,2,3)这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。在Mybatis中的配置则如下:
,suffix 表⽰在trim标签包裹的部分的前⾯或者后⾯添加内容
2.如果同时有prefixOverrides,suffixOverrides 表⽰会⽤prefix,suffix覆盖Overrides中的内容。
3.如果只有prefixOverrides,suffixOverrides 表⽰删除开头的或结尾的xxxOverides指定的内容。4 sql批量更新
看另外⼀个⽰例:
set status= separator=" " open="case ID" close="end"> when #{} then #{} separator="," open="(" close=")"> #{,jdbcType=BIGINT}
set status =
case when id = #{} then #{}//此处应该是
转载⾃
1.组装多个update语句,这种⽅式需要设置jdbc连接 allowMultiQueries=true
_id=#{};
whenUPDATE
rent_hl_room l
SET electricity_meter_id =
CASE WHEN room_id = 1942 THEN 180524348
WHEN room_id = 1945 THEN 180524480
END, electricity_meter_source_type =
CASE WHEN room_id = 1942
THEN ym
WHEN room_id = 1945
THEN ym
END
WHERE room_id = 1942
OR room_id = 1945
经测试 100条数据的时候第⼀种⽅式的效率⽐第⼆种差不多⾼1倍。。。。。
2023年8月3日发(作者:)
mybatis批量更新update详解1 更新单条记录
UPDATE course SET name = 'course1' WHEREid = 'id1';2 更新多条记录的同⼀个字段为同⼀个值 UPDATE course SET name='course1' WHERE id in('id1','id2','id3);3 更新多条记录为多个字段为不同的值⽐较普通的写法,是通过循环,依次执⾏update语句。Mybatis写法如下:
⼀条记录update⼀次,性能⽐较差,容易造成阻塞。MySQL没有提供直接的⽅法来实现批量更新,但可以使⽤case when语法来实现这个功能。 UPDATE course SET name = CASE id
WHEN 1 THEN 'name1' WHEN 2 THEN 'name2' WHEN 3 THEN 'name3' END,
title = CASE id
WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3' ENDWHERE id IN (1,2,3)这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。在Mybatis中的配置则如下:
,suffix 表⽰在trim标签包裹的部分的前⾯或者后⾯添加内容
2.如果同时有prefixOverrides,suffixOverrides 表⽰会⽤prefix,suffix覆盖Overrides中的内容。
3.如果只有prefixOverrides,suffixOverrides 表⽰删除开头的或结尾的xxxOverides指定的内容。4 sql批量更新
看另外⼀个⽰例:
set status= separator=" " open="case ID" close="end"> when #{} then #{} separator="," open="(" close=")"> #{,jdbcType=BIGINT}
set status =
case when id = #{} then #{}//此处应该是
转载⾃
1.组装多个update语句,这种⽅式需要设置jdbc连接 allowMultiQueries=true
_id=#{};
whenUPDATE
rent_hl_room l
SET electricity_meter_id =
CASE WHEN room_id = 1942 THEN 180524348
WHEN room_id = 1945 THEN 180524480
END, electricity_meter_source_type =
CASE WHEN room_id = 1942
THEN ym
WHEN room_id = 1945
THEN ym
END
WHERE room_id = 1942
OR room_id = 1945
经测试 100条数据的时候第⼀种⽅式的效率⽐第⼆种差不多⾼1倍。。。。。
发布评论