mybatisplus多条插入
时间: 2023-11-16 21:54:56 浏览: 40
mybatisplus提供了批量插入的方法,可以一次性插入多条数据。具体实现方式如下:
```java
List<User> userList = new ArrayList<>();
// 假设有10条数据需要插入
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("user" + i);
user.setAge(i);
userList.add(user);
}
// 执行批量插入操作
boolean result = userService.saveBatch(userList);
```
其中,`userService` 是一个继承了 `IService<User>` 接口的服务类,`User` 是一个实体类,包含了需要插入的数据。
相关问题
mybatisplus 3.5.1批量插入性能
Mybatisplus 3.5.1的批量插入性能相对较高,可以通过以下几种方式进行优化:
1.使用batch插入:Mybatisplus提供了batch插入的方法,可以将多条SQL语句合并成一条,减少了SQL语句的发送次数,从而提高了性能。
2.使用多线程:可以将数据分成多个批次,每个批次使用一个线程进行插入,从而提高了并发度,进而提高了性能。
3.关闭日志:在批量插入时,关闭日志可以减少IO操作,从而提高了性能。
4.使用JDBC批量插入:Mybatisplus提供了JDBC批量插入的方法,可以将多条SQL语句合并成一条,减少了SQL语句的发送次数,从而提高了性能。
mybatisplus 高效批量插入
MyBatis-Plus 提供了一个高效的批量插入方法 `insertBatchSomeColumn(List<T> entityList)`,可以一次性向数据库插入多条数据。该方法可以利用 JDBC 的 `addBatch()` 和 `executeBatch()` 方法实现批量插入。
使用该方法需要注意以下几点:
1. 实体类需要继承 `com.baomidou.mybatisplus.extension.activerecord.Model` 类。
2. 数据库表需要设置主键生成策略为 `ID_WORKER` 或 `ID_WORKER_STR`。
3. 执行插入操作时需要关闭自动提交,开启事务。
下面是一个示例代码:
```java
List<User> userList = new ArrayList<>();
// 添加多条用户数据到 userList 中
// ...
// 执行批量插入操作
boolean success = new UserService().saveBatch(userList);
if (success) {
// 插入成功
} else {
// 插入失败
}
```
其中 `UserService` 是一个继承了 `com.baomidou.mybatisplus.extension.service.impl.ServiceImpl` 类的服务类,`User` 是一个继承了 `com.baomidou.mybatisplus.extension.activerecord.Model` 类的实体类。
另外,MyBatis-Plus 还提供了一种更底层的批量插入方法 `insertBatch(List<T> entityList, int batchSize)`,可以自定义批量操作的大小。使用方法与上述方法相似。