Java书签 # MyBatis分页插件PageHelper应用方案

楔子:愿你三冬暖,愿你春不寒。愿你天黑有灯,下雨有伞。愿你一路上,有良人相伴。 

 

1.书签记要

使用 com.github.pagehelper.PageHelper 简洁方便地实现分页查询和 count 查询。

 

2.解决方案

三步上手:

2.1.依赖插件

在项目的 pom.xml 中添加该插件依赖:


    com.github.pagehelper
    pagehelper
    4.1.4

 

2.2.配置插件

在项目 resources 下在 MyBatis 配置 xml 中(如 mybatis.xml)配置拦截器插件:





    
    
    
        
        
        
        
        
        
        
        
    

注:分页插件可选参数如下:

dialect:默认情况下会使用 PageHelper 方式进行分页,如果想要实现自己的分页逻辑,可以实现 Dialect(com.github.pagehelper.Dialect) 接口,然后配置该属性为实现类的全限定名称。详见:https://pagehelper.github.io/docs/howtouse/

 

好了,到此,PageHelper 插件配置完成。

 

2.3.使用插件

在需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。如:

PageHelper.startPage(1, 10);
OrderBean orderCondition = new OrderBean();
orderCondition.setUserId(888L);
List orderInfoList = orderMapper.queryOrderList(orderCondition);

PageHelper.startPage 第一个参数表示第几页,第二个参数表示每页显示多少记录。这样在执行SQL后就会将记录按照语句中的分页设置进行分页查询。

如果需要在分页查询时进行 count 查询获取总记录数的话,可以使用更强大的 PageInfo 类,它会对结果进行包装。
 

2.4.测试插件

写个测试用例验证一下吧:

    @Autowired
    private OrderMapper orderMapper;

    @Test
    public void testQueryMyOrderList() {
        int pageNo = 1; int pageSize = 10;
        PageHelper.startPage(pageNo, pageSize);

        OrderBean orderCondition = new OrderBean();
        orderCondition.setUserId(888L);
        List orderInfoList = orderMapper.queryOrderList(orderCondition);
        PageInfo pageInfo = new PageInfo(myOrderInfoLimitList);
        System.out.println(JSON.toJSONString(pageInfo));
        // 测试 PageInfo 全部属性,PageInfo 包含了非常全面的分页属性
        // 当前页码
        assertEquals(1, pageInfo.getPageNum());
        // 每页记录数
        assertEquals(10, pageInfo.getPageSize());
        // 获取当前页第一条
        assertEquals(1, pageInfo.getStartRow());
        // 获取当前页最后一条
        assertEquals(10, pageInfo.getEndRow());
        // 查询结果总记录数
        assertEquals(363, pageInfo.getTotal());
        // 分页查询结果的总页数
        assertEquals(37, pageInfo.getPages());
        // 第一页页码
        assertEquals(1, pageInfo.getFirstPage());
        // 最后一页页码
        assertEquals(8, pageInfo.getLastPage());
        // 下一页页码
        assertEquals(2, pageInfo.getNextPage());
        // 是否是第一页
        assertEquals(true, pageInfo.isIsFirstPage());
        // 是否是最后一页
        assertEquals(false, pageInfo.isIsLastPage());
        // 是否有上一页
        assertEquals(false, pageInfo.isHasPreviousPage());
        // 是否有下一页
        assertEquals(true, pageInfo.isHasNextPage());
    }

 

参考资料:
PageHelper GitHub:https://github.com/pagehelper/Mybatis-PageHelper
如何使用分页插件:https://pagehelper.github.io/docs/howtouse/

 

你可能感兴趣的:(MyBatis,Java)