mybatis-plus插入多条数据
时间: 2023-09-24 14:09:48 浏览: 176
Mybatis-Plus 提供了 `insertBatch` 方法用于批量插入数据。假设我们有一个实体类 `User`,可以使用以下方法来批量插入多条数据:
```java
List<User> userList = new ArrayList<>();
// 假设这里有多条 User 数据需要插入
int result = userService.saveBatch(userList);
```
需要注意的是,`saveBatch` 方法的返回值是成功插入数据的条数。如果插入失败,会抛出异常。如果需要批量插入数据时忽略插入失败的数据,可以使用 `saveBatchSomeColumn` 方法。同时,如果需要自定义批量插入的 SQL 语句,可以使用 `insertBatchSomeColumn` 方法。
另外,Mybatis-Plus 还提供了 `insertBatchSomeColumn` 方法,可以指定插入的字段,例如:
```java
List<User> userList = new ArrayList<>();
// 假设这里有多条 User 数据需要插入
int result = userService.saveBatchSomeColumn(userList, new QueryWrapper<User>().select("name", "age"));
```
以上代码只会插入 `name` 和 `age` 两个字段的数据。
相关问题
mybatis-plus批量插入数据
可以使用Mybatis-plus提供的BatchInsert方法来实现批量插入数据,示例代码如下:
```java
List<User> userList = new ArrayList<>();
// 添加多个User对象到userList中
int batchSize = 1000; // 每批次插入的数据量
int totalSize = userList.size();
int batchCount = (totalSize + batchSize - 1) / batchSize; // 计算批次数
for (int i = 0; i < batchCount; i++) {
int fromIndex = i * batchSize;
int toIndex = Math.min((i + 1) * batchSize, totalSize);
List<User> subList = userList.subList(fromIndex, toIndex);
int rows = userMapper.batchInsert(subList); // 批量插入数据
System.out.println("第" + (i + 1) + "批次插入了" + rows + "条数据");
}
```
其中,User是一个JavaBean,userMapper是Mybatis-plus自动生成的Mapper接口,batchInsert方法是自定义的批量插入方法,其实现类似于单条插入,只是需要在SQL语句中添加VALUES子句的多个值。
Mybatis-Plus 批量插入数据 最优化
Mybatis-Plus 提供了两种批量插入数据的方式:
1. 使用 `insertBatch` 方法
```
List<User> userList = new ArrayList<>();
// 添加数据到 userList 中
userService.saveBatch(userList, 1000); // 每次插入 1000 条数据
```
这种方式比较简单,但是在数据量较大的情况下,插入速度会比较慢。
2. 使用 `insertBatchSomeColumn` 方法
```
List<User> userList = new ArrayList<>();
// 添加数据到 userList 中
userService.saveBatchSomeColumn(userList, 1000); // 每次插入 1000 条数据
```
这种方式可以通过设置 `insertBatchSomeColumn` 方法的第二个参数来控制每次插入的数据量,而且在数据量较大的情况下,插入速度会比 `insertBatch` 方法快很多。
除此之外,还可以通过设置 `Mybatis-Plus` 的一些配置参数来进一步优化批量插入数据的效率,例如:
1. 关闭二级缓存
```
mybatis-plus.configuration.cache-enabled=false
```
2. 关闭日志
```
mybatis-plus.configuration.log-impl=nothing
```
3. 批量插入数据时关闭自增主键回填
```
mybatis-plus.global-config.db-config.insert-strategy=not_null
```
4. 批量插入数据时关闭主键回填
```
mybatis-plus.global-config.db-config.id-type=none
```
综上所述,批量插入数据的最优化方式,需要根据具体的业务场景和数据量来选择合适的方式和配置参数。
阅读全文