MyBatisPlus从零到一:快速入门与核心功能详解(6)
四、分页插件
MybatisPlus 提供了很多的插件功能,进一步拓展其功能。目前已有的插件有:
PaginationInnerInterceptor:自动分页
TenantLineInnerInterceptor:多租户
DynamicTableNameInnerInterceptor:动态表名
OptimisticLockerInnerInterceptor:乐观锁
IllegalSQLInnerInterceptor:sql 性能规范
BlockAttackInnerInterceptor:防止全表更新与删除
这里我们以分页插件来学习插件的用法。
在未引入分页插件的情况下,MybatisPlus是不支持分页功能的,IService和BaseMapper中的分页方法都无法正常起效。所以,我们必须配置分页插件。
4.1 配置分页插件:
在项目中新建一个配置类:

其代码如下:
@Configuration
public class MybatisConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1. 初始化核心插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //2. 添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //3. 返回核心插件
        return interceptor;
    }
}4.2 使用演示:

注意:分页查询传递的参数 page 和接收的 page 是同一个对象。
@Test
void testPageQuery(){
    // 1.分页查询,new Page()的两个参数分别是:页码、每页大小
    Page<User> p = userService.page(new Page<>(2, 2));
    // 2.总条数
    System.out.println("total = " + p.getTotal());
    // 3.总页数
    System.out.println("pages = " + p.getPages());
    // 4.数据
    List<User> records = p.getRecords();
    records.forEach(System.out::println);
}效果如下:

这里用到了分页参数,Page,即可以支持分页参数,也可以支持排序参数。常见的 API 如下:
其中 OrderItem 的第二个参数,如果为 true 表示为升序,如果为 false 表示为降序。page 可以添加多个排序规则,当第一个排序规则相等时,采用第二个排序规则,以此类推。
int pageNo = 1, pageSize = 5;
// 分页参数
Page<User> page = Page.of(pageNo, pageSize);
// 排序参数, 通过OrderItem来指定
page.addOrder(new OrderItem("balance", false));
//.....可以有很多个
page.addOrder(....)
// 进行分页查询
userService.page(page);                                            





