Mybatis 插入和删除批处理操作

 更新时间:2016年12月05日 11:38:56   投稿:mrr  
在操作数据库时,经常会碰到批量插入、批量删除的情况,直接执行SQL语句还好做一点,当使用Mybatis进行批量插入、批量删除时会有一些问题。下面对使用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 插入和删除批处理操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • SpringBoot解决jar包冲突的问题,简单有效

    SpringBoot解决jar包冲突的问题,简单有效

    这篇文章主要介绍了SpringBoot解决jar包冲突的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java不同版本在多线程中使用随机数生成器的实现

    java不同版本在多线程中使用随机数生成器的实现

    本文主要介绍了java不同版本在多线程中使用随机数生成器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 如何用注解的方式实现Mybatis插入数据时返回自增的主键Id

    如何用注解的方式实现Mybatis插入数据时返回自增的主键Id

    这篇文章主要介绍了如何用注解的方式实现Mybatis插入数据时返回自增的主键Id,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Docker搭建前端Java的开发环境详解

    Docker搭建前端Java的开发环境详解

    相信每个人入职第一天就是搭建本地开发环境,因为我司用的是java,看见了多年不见的eclipse的图标出现我的电脑上,我是难过的。后来知道并不是我一个人有此感受。这篇文章是为了解决前后端开发没有彻底分离的坑,详细的给大家介绍了利用Docker搭建前端Java的开发环境。
    2016-10-10
  • 前后端分离跨域springBoot跨域有效解决问题

    前后端分离跨域springBoot跨域有效解决问题

    这篇文章主要介绍了前后端分离跨域springBoot跨域有效解决问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Mybatis下动态sql中##和$$的区别讲解

    Mybatis下动态sql中##和$$的区别讲解

    今天小编就为大家分享一篇关于Mybatis下动态sql中##和$$的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java中Volatile关键字详解及代码示例

    Java中Volatile关键字详解及代码示例

    这篇文章主要介绍了Java中Volatile关键字详解及代码示例,分为两个部分,第一部分介绍了Volatile关键字的基本概念等内容,第二部分分享了实例代码,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot 中使用JSP的方法示例

    SpringBoot 中使用JSP的方法示例

    本篇文章主要介绍了SpringBoot 中使用JSP的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 使用Java8 Stream流的skip + limit实现批处理的方法

    使用Java8 Stream流的skip + limit实现批处理的方法

    Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念这篇文章主要介绍了使用Java8 Stream流的skip + limit实现批处理,需要的朋友可以参考下
    2022-07-07
  • Spring Boot 整合 MongoDB的示例

    Spring Boot 整合 MongoDB的示例

    这篇文章主要介绍了Spring Boot 整合 MongoDB的示例,帮助大家更好的理解和学习spring boot框架,感兴趣的朋友可以了解下
    2020-10-10

最新评论