一、配置类上的注解
@Configuration:标记这是一个 Spring 配置类,相当于 XML 配置文件,会被 Spring 自动扫描并加载。@EnableTransactionManagement:开启 Spring 的事务管理功能,允许使用@Transactional注解控制事务(如@Transactional(rollbackFor = Exception.class))。
二、分页插件配置
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
// 创建 MyBatis-Plus 拦截器管理器
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 向管理器中添加分页插件(PaginationInnerInterceptor)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// 返回配置好的拦截器管理器
return interceptor;
}
作用:
- 注册 MyBatis-Plus 的分页插件,让你可以通过简单的 API 实现分页查询,无需手动编写复杂的 SQL 分页语句(如
LIMIT、OFFSET)。 - 分页插件会自动拦截 SQL 查询,根据传入的分页参数(页码、每页条数),自动生成分页 SQL。
三、使用方式示例
配置完成后,你可以在 Service 层这样使用分页功能:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUserPage(int pageNum, int pageSize) {
// 创建分页对象(页码、每页条数)
Page<User> page = new Page<>(pageNum, pageSize);
// 调用 mapper 方法,传入分页对象
// 插件会自动生成分页 SQL(如 LIMIT ?, ?)
return userMapper.selectPage(page, null); // null 表示无查询条件
}
}
四、注意事项
-
默认方言:
分页插件会根据数据库类型(如 MySQL、Oracle)自动选择合适的分页方言。如果使用特殊数据库,可能需要指定方言:// 指定数据库方言(例如 PostgreSQL) interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL)); -
性能优化:
对于大数据量分页,可配置maxLimit参数限制单次查询的最大条数,防止 OOM:PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(); paginationInterceptor.setMaxLimit(1000L); // 限制每页最大 1000 条数据 interceptor.addInnerInterceptor(paginationInterceptor); -
事务支持:
@EnableTransactionManagement配合@Transactional注解,可实现事务控制:@Transactional(rollbackFor = Exception.class) public void updateUser(User user) { // 业务逻辑,失败自动回滚 }
作用:
- 简化分页查询:直接调用
selectPage()方法,无需手动处理分页 SQL。 - 管理事务:使用
@Transactional注解控制事务的提交和回滚。 - 提升开发效率:避免重复编写分页逻辑和事务模板代码。
999

被折叠的 条评论
为什么被折叠?



