mybatisplus3.3.0中批量插入用什么类
时间: 2024-02-11 15:06:07 浏览: 98
在 MyBatis-Plus 3.3.0 中,批量插入可以使用 MyBatis 原生的批量插入方法,需要使用 `SqlSession` 中的 `insert` 方法。
具体地,可以使用以下代码进行批量插入操作:
```java
List<User> userList = new ArrayList<>();
// 假设需要批量插入的 User 对象存放在 userList 中
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
for (User user : userList) {
userMapper.insert(user);
}
sqlSession.commit();
} catch (Exception e) {
sqlSession.rollback();
} finally {
sqlSession.close();
}
```
上述代码中,首先通过 `sqlSessionFactory` 获取 `SqlSession` 对象,并指定执行器类型为 `ExecutorType.BATCH`。然后,通过 `SqlSession` 的 `getMapper` 方法获取 `UserMapper` 接口的实例,然后循环遍历 `userList`,逐一插入数据。最后,调用 `SqlSession` 的 `commit` 方法提交事务,或者在出现异常时调用 `rollback` 方法回滚事务。
需要注意的是,如果插入的数据量较大,可能会导致内存溢出,可以通过调整 `batch` 的大小来控制批量插入的效率和内存占用。例如,可以将 `batch` 大小设置为 1000,即每插入 1000 条数据就进行一次批量插入操作:
```java
final int batchSize = 1000;
int count = 0;
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
for (User user : userList) {
userMapper.insert(user);
if (++count % batchSize == 0) {
sqlSession.flushStatements();
}
}
sqlSession.commit();
} catch (Exception e) {
sqlSession.rollback();
} finally {
sqlSession.close();
}
```
上述代码中,使用了 `sqlSession.flushStatements()` 方法来刷新批量执行器中的语句,从而避免内存溢出。
阅读全文
相关推荐


















