更新单条记录
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=
"updateBatch"
parameterType=
"java.util.List"
>
<foreach collection=
"list"
item=
"item"
index
=
"index"
open
=
""
close
=
""
separator=
";"
>
update
course
<
set
>
name
=${item.
name
}
</
set
>
where
id = ${item.id}
</foreach>
</
update
>
|
一条记录update一次,性能比较差,容易造成阻塞。
MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。
1
2
3
4
5
6
7
8
9
10
11
12
|
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'
END
更新单条记录
更新多条记录的同一个字段为同一个值
更新多条记录为多个字段为不同的值比较普通的写法,是通过循环,依次执行update语句。 Mybatis写法如下:
一条记录update一次,性能比较差,容易造成阻塞。 MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。
这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。 在Mybatis中的配置则如下:
|
这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。
在Mybatis中的配置则如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<
update
id=
"updateBatch"
parameterType=
"list"
>
update
course
<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
>
http://my.oschina.net/ckanner/blog/338515
|