mybatis批量更新 不要循环
时间: 2023-10-13 08:26:13 浏览: 109
Mybatis批量更新报错问题
MyBatis 提供了批量操作的支持,可以使用 `batch` 标签实现批量更新,不需要循环。具体实现步骤如下:
1. 在 Mapper.xml 文件中,编写 `batch` 标签,指定对应的 SQL 语句,例如:
```xml
<batch>
UPDATE user SET name = #{name} WHERE id = #{id}
</batch>
```
2. 在 Java 代码中,通过 `SqlSession` 的 `batch` 方法执行批量更新,例如:
```java
try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
for (User user : userList) {
userMapper.updateUser(user);
}
sqlSession.commit();
}
```
上述代码中,通过 `sqlSessionFactory` 获取 `SqlSession` 对象,并指定执行器类型为 `ExecutorType.BATCH`,然后获取 `UserMapper` 对象,循环调用 `updateUser` 方法进行更新操作,最后调用 `sqlSession.commit()` 方法提交事务。
注意事项:
- 在开启批量操作时,需要指定执行器类型为 `ExecutorType.BATCH`,否则会使用默认的执行器类型,无法实现批量操作。
- 批量操作需要在一个事务中进行,因此需要使用 `sqlSession.commit()` 方法提交事务。
- 批量操作的性能通常优于循环单条更新的性能,因此建议使用批量操作实现批量更新。
阅读全文