【MyBatis-4】MyBatis批量insert、update、delete数据

当然,也可以在程序中自己拼接sql语句,在dao层传入该sql语句作为参数。要注意…

当然,也可以在程序中自己拼接sql语句,在dao层传入该sql语句作为参数。要注意的是,采用这种方式时,不能使用 # 而是要使用 $

批量操作需要使用到比较复杂的标签,所以都在 xml 中实现。

需要注意的是,数据库配置中要将allowMultiQueries置为true,例如:

首先,看一下批量插入的xml样板写法:

上面实现了向 student表中批量插入student信息。

这个很简单,只要调用时,传入学生实体的list就可以了。

dao层:

studentList的数据样板:

1.1 根据一个主键批量插入

再看一个稍微复杂一些的场景,向年级表插入班级学生关联信息。表结构如下:

数据结构如下(JOSNObject student):

与之对应的dao层(位于StudentDao.java中):

service层:

xml:

1.2 插入已存在数据自动更新

首先,已存在数据的判定由数据库通过唯一的主键或者索引实现的。

以上文向年级表插入班级学生关联信息为例,因为通过三个字段才能断定一条数据是否已存在,所以首先要将为这三个字段添加联合唯一索引

接下来只要在 xml 中略作修改即可:

student表是这样子的:

待更新的数据:

dao层:

2.1 MultiQueries

所谓的MultiQueries,就是一次提交多个查询语句。采用这种方式,要设置 allowMultiQueries=true

首先,我们来看看这种方式下,sql是怎么写的:

其实很简单,就是逐条更新,但一次提交给MySQL服务器而已。

mybatis xml中的写法如下:

控制台sql语句:

2.2 case when

这个思路是借用 case when语法 拼接语句来实现批量更新。要想实现将待更新的数据更新到库里,sql语句该怎么写呢,如下:

**mybatis xml中的写法如下:**du

控制台sql语句:

未完待续…

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/2731.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部