Mybatisバッチの挿入/削除
2332 ワード
作者:Tyanブログ:noahsnail.com | CSDN |
データベースを操作しているときに、一括挿入、一括削除ということがよくありますが、直接SQL文を実行するのはまだしも、Mybatisを使用して一括挿入、一括削除を行う場合に問題があります.以下、Mybatisを使用した一括挿入、一括削除について説明します.
1.一括挿入 Javaコード: XMLコード 大量挿入SQL文
備考:VALUE()はMysqlの関数です.詳細はドキュメントfunction_を参照してください.values.
主な機能は、データの重複時に更新する値を取得できることです.
2.一括削除 Javaコード: XMLコード SQL文
備考:上のコードがx,y,zが連合プライマリ・キーの場合、通常は
データベースを操作しているときに、一括挿入、一括削除ということがよくありますが、直接SQL文を実行するのはまだしも、Mybatisを使用して一括挿入、一括削除を行う場合に問題があります.以下、Mybatisを使用した一括挿入、一括削除について説明します.
1.一括挿入
// Model: Test.java
@Data
public class Test {
private String x;
private String y;
private String z;
}
// Mapper: TestMapper.java
public void insertTestList(List testList);
...
INSERT IGNORE INTO
test_table(test_x, test_y, test_z)
VALUES
#{item}.x, #{item.y}, #{item}.z
INSERT INTO
test_table(test_x, test_y, test_z)
VALUES
#{item}.x, #{item.y}, #{item}.z
ON DUPLICATE KEY UPDATE
test_x = VALUES(test_x),
test_y = VALUES(test_y),
test_z = VALUES(test_z)
...
insert into test_table(x, y, z) values (1, 1, 1), (2, 2, 2), (3, 3, 3)
備考:VALUE()はMysqlの関数です.詳細はドキュメントfunction_を参照してください.values.
主な機能は、データの重複時に更新する値を取得できることです.
2.一括削除
// Model: Test.java
@Data
public class Test {
private String x;
private String y;
private String z;
}
// Mapper: TestMapper.java
public void deleteTestList(List testList);
...
DELETE FROM
test_table
WHERE
test_x = #{item.x} AND test_y = #{item.y} AND test_z = #{item.z}
...
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が連合プライマリ・キーの場合、通常は
where id in
を使用します.