mybatis批量插入实例
时间: 2023-11-17 13:01:58 浏览: 111
Mybatis提供了两种方式实现批量插入,分别是xml方式和注解方式。下面将分别介绍这两种方式的实现方法。
1. xml方式实现批量插入
在Mapper.xml文件中,使用foreach标签将多个插入语句拼接在一起,然后使用batch标签将这些语句包裹起来,最后在代码中调用SqlSession的batch方法执行批量插入操作。
示例代码如下:
```xml
<insert id="batchInsert" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
insert into user(name, age) values(#{item.name}, #{item.age})
</foreach>
</insert>
```
2. 注解方式实现批量插入
在Mapper接口中,使用@InsertProvider注解指定一个Provider类,该类中实现了批量插入的逻辑。在Provider类中,使用foreach标签将多个插入语句拼接在一起,最后返回一个字符串,该字符串即为拼接好的插入语句。在代码中调用Mapper接口中的批量插入方法即可执行批量插入操作。
示例代码如下:
```java
@InsertProvider(type = BatchInsertProvider.class, method = "batchInsert")
void batchInsert(List<User> userList);
```
```java
public class BatchInsertProvider {
public String batchInsert(Map<String, Object> map) {
List<User> userList = (List<User>) map.get("list");
StringBuilder sb = new StringBuilder();
sb.append("insert into user(name, age) values");
for (int i = 0; i < userList.size(); i++) {
sb.append("(#{list[").append(i).append("].name}, #{list[").append(i).append("].age})");
if (i != userList.size() - 1) {
sb.append(",");
}
}
return sb.toString();
}
}
```
阅读全文