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