@BatchSize注解 举例
时间: 2024-10-02 16:00:35 浏览: 26
在MyBatis中,`@BatchSize`是一个用于分批执行数据库操作的注解,主要用于减少一次性从数据库读取的数据量,从而缓解内存压力。它通常与`@Insert`, `@Update`, 或 `@Delete` 这些增删改操作一起使用。
下面是一个简单的例子:
```java
import org.apache.ibatis.annotations.*;
@Mapper
public interface UserMapper {
// 使用 @BatchSize 注解的插入方法
@Insert("INSERT INTO users(name, email)")
@UseGeneratedKeys(keyProperty = "id") // 使用自动生成主键
@BatchSize(value = 100, unit = BatchUnit.ITEMS) // 每次插入100条记录
int[] insertUsers(@Param("users") List<User> userList);
// 或者在更新或删除操作中使用
@Update("UPDATE users SET status = #{status} WHERE id = #{id}")
@BatchSize(value = 50, unit = BatchUnit.ROW) // 每次更新50行
int updateStatus(@Param("id") Integer id, @Param("status") Integer status);
}
```
在这个例子中,`@BatchSize(value = 100, unit = BatchUnit.ITEMS)` 表示当传递给 `insertUsers` 的用户列表大小超过100时,会将其分割成几个较小的部分,每部分包含100个用户,然后逐批插入到数据库。
阅读全文