Mybatisバッチの挿入/削除

2332 ワード

作者:Tyanブログ:noahsnail.com |  CSDN  | 
データベースを操作しているときに、一括挿入、一括削除ということがよくありますが、直接SQL文を実行するのはまだしも、Mybatisを使用して一括挿入、一括削除を行う場合に問題があります.以下、Mybatisを使用した一括挿入、一括削除について説明します.
1.一括挿入
  • Javaコード:
  • // Model: Test.java
    
    @Data
    public class Test {
        private String x;
        private String y;
        private String z;
    }
    
    // Mapper: TestMapper.java
    public void insertTestList(List testList);
    
  • XMLコード
  • 
    
    ...
    
    
    
        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)
    
    
    ...
    
  • 大量挿入SQL文
  • insert into test_table(x, y, z) values (1, 1, 1), (2, 2, 2), (3, 3, 3)
    

    備考:VALUE()はMysqlの関数です.詳細はドキュメントfunction_を参照してください.values.
    主な機能は、データの重複時に更新する値を取得できることです.
    2.一括削除
  • Javaコード:
  • // Model: Test.java
    
    @Data
    public class Test {
        private String x;
        private String y;
        private String z;
    }
    
    // Mapper: TestMapper.java
    public void deleteTestList(List testList);
    
  • XMLコード
  • 
    
    ...
    
    
        DELETE FROM 
            test_table
        WHERE
        
            test_x = #{item.x} AND test_y = #{item.y} AND test_z = #{item.z}
        
    
    
    ...
    
  • SQL文
  • 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を使用します.