在操作數(shù)據(jù)庫(kù)時(shí),經(jīng)常會(huì)碰到批量插入、批量刪除的情況,直接執(zhí)行SQL語(yǔ)句還好做一點(diǎn),當(dāng)使用Mybatis進(jìn)行批量插入、批量刪除時(shí)會(huì)有一些問(wèn)題。下面對(duì)使用Mybatis批量插入,批量刪除進(jìn)行介紹。
1. 批量插入
Java代碼:
1
2
3
4
5
6
7
8
9
|
// Model: Test.java @Data public class Test { private String x; private String y; private String z; } // Mapper: TestMapper.java public void insertTestList(List<Test> testList); |
XML代碼
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
|
<!-- XML: TestMapper.XML --> ... <!-- 忽略重復(fù)數(shù)據(jù) --> <insert id= "insertTestList" parameterType= "Test" > INSERT IGNORE INTO test_table(test_x, test_y, test_z) VALUES <foreach item= "item" index= "index" collection= "list" open= "(" close= ")" separator= "," > #{item}.x, #{item.y}, #{item}.z </foreach> </insert> <!-- 更新重復(fù)數(shù)據(jù) --> <insert id= "insertTestList" parameterType= "Test" > INSERT INTO test_table(test_x, test_y, test_z) VALUES <foreach item= "item" index= "index" collection= "list" open= "(" close= ")" separator= "," > #{item}.x, #{item.y}, #{item}.z </foreach> ON DUPLICATE KEY UPDATE test_x = VALUES(test_x), test_y = VALUES(test_y), test_z = VALUES(test_z) </insert> ... |
批量插入SQL語(yǔ)句
1
|
insert into test_table(x, y, z) values ( 1 , 1 , 1 ), ( 2 , 2 , 2 ), ( 3 , 3 , 3 ) |
備注:VALUE()是Mysql的一個(gè)函數(shù),具體解釋可以查看文檔function_values。
主要功能就是在數(shù)據(jù)重復(fù)時(shí)可以獲取要更新的值。
2. 批量刪除
Java代碼:
1
2
3
4
5
6
7
8
9
|
// Model: Test.java @Data public class Test { private String x; private String y; private String z; } // Mapper: TestMapper.java public void deleteTestList(List<Test> testList); |
XML代碼
1
2
3
4
5
6
7
8
9
10
11
|
<!-- XML: TestMapper.XML --> ... <delete id= "deleteTestList" parameterType= "Test" > DELETE FROM test_table WHERE <foreach item= "item" index= "index" collection= "list" open= "(" close= ")" separator= "OR" > test_x = #{item.x} AND test_y = #{item.y} AND test_z = #{item.z} </foreach> </delete> ... |
SQL語(yǔ)句
1
|
delete from test_table where (test_x = 1 AND test_y = 1 AND test_z = 1 ) or (test_x = 2 AND test_y = 2 AND test_z = 2 ) or (test_x = 3 AND test_y = 3 AND test_z = 3 ) |
備注:上面的代碼為x,y,z為聯(lián)合主鍵的情況,普通情況使用where id in。
以上所述是小編給大家介紹的Mybatis 插入和刪除批處理操作,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!