mybatis批量insert java示例
时间: 2023-07-11 08:42:07 浏览: 99
MyBatis 提供了 `batch` 批处理操作,可以在一次数据库连接中执行多个 SQL 语句。在 MyBatis 中,批处理操作可以通过 `SqlSession` 的 `insert` 方法实现。具体来说,可以先将多个对象添加到一个列表中,然后将该列表作为参数传递给 `insert` 方法。
以下是一个使用 MyBatis 进行批量插入的 Java 示例代码:
```java
public void batchInsert(List<User> userList) {
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); // 打开批处理模式
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
for (User user : userList) {
mapper.insert(user); // 添加到批处理中
}
sqlSession.commit(); // 执行批处理
} catch (Exception e) {
sqlSession.rollback(); // 回滚事务
throw e; // 抛出异常,由上层代码处理
} finally {
sqlSession.close(); // 关闭 Session
}
}
```
在上面的示例中,我们首先使用 `sqlSessionFactory.openSession(ExecutorType.BATCH)` 方法打开一个批处理模式的 `SqlSession`。接着通过 `getMapper` 方法获取 `UserMapper` 接口实例,然后遍历传入的用户列表,将每个用户对象添加到批处理中。最后调用 `sqlSession.commit()` 方法执行批处理操作。
需要注意的是,在批处理模式下,MyBatis 会将多个 SQL 语句合并成一个批处理操作,因此在批处理操作之前必须先将所有要执行的 SQL 语句添加到批处理中。另外,批处理操作需要在事务中执行,因此在执行批处理操作之前需要先打开事务,并在批处理操作执行完成后提交或回滚事务。
阅读全文