Mybatis 배치 삽입 및 삭제 작업

2805 단어 mybatis일괄 처리
데이터베이스를 조작할 때 대량으로 삽입하고 대량으로 삭제하는 상황을 자주 볼 수 있습니다. 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<Test> testList);
XML 코드

<!-- XML: TestMapper.XML -->
...
<!--   -->
<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>
<!--   -->
<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 문장 삽입

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<Test> testList);
XML 코드

<!-- 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 문

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을 사용합니다.
위에서 말한 것은 편집자가 여러분께 소개한 Mybatis 삽입과 일괄 처리 삭제 작업입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기