Mybatis的批处理
作者:网络转载 发布时间:[ 2016/11/30 10:38:40 ] 推荐标签: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。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11