使用 mybatisplus 的 insertBatchSomeColumn后,数据间隔一个批量插入
时间: 2024-03-17 13:40:24 浏览: 69
mp-batch-insert.zip
使用 MyBatis-Plus 的 insertBatchSomeColumn 方法可以批量插入数据,并且只插入指定的列,例如:
```java
List<User> userList = new ArrayList<>();
// 添加用户数据到 userList
int batchSize = 1000; // 每批次插入的数据量
for (int i = 0; i < userList.size(); i += batchSize) {
List<User> subList = userList.subList(i, Math.min(i + batchSize, userList.size()));
int rows = userMapper.insertBatchSomeColumn(subList);
// 处理插入结果
}
```
这段代码会将 userList 分批插入到数据库中,每批次插入 batchSize 条数据。如果你发现每批次插入的数据间隔了一个批量插入,可能是因为数据库中的自增主键或者触发器导致的。你可以在插入前将自增主键或者触发器关闭,插入完成后再打开。例如:
```java
// 关闭自增主键
userMapper.disableInsertBatchSomeColumn();
for (int i = 0; i < userList.size(); i += batchSize) {
List<User> subList = userList.subList(i, Math.min(i + batchSize, userList.size()));
int rows = userMapper.insertBatchSomeColumn(subList);
// 处理插入结果
}
// 打开自增主键
userMapper.enableInsertBatchSomeColumn();
```
这样就可以避免数据间隔一个批量插入的问题了。
阅读全文