spring boot 集成pagehelper

目录

1.导入依赖

2.配置文件

3.示例

4.注意


1.导入依赖

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.1</version>
        </dependency>

 注意使用spring boot项目要导入上面的依赖,不用直接使用pagehepler,一些ssm项目可以使用pagehepler依赖。

2.配置文件

# PageHelper分页插件
pagehelper:
  helperDialect: mysql  //数据库方言
  supportMethodsArguments: true  //是否支持传参
  params: count=countSql   //参数

3.示例

方式一

    /**
     * 查询结算账单手账列表
     */
    @GetMapping("/list")
    public TableDataInfo list(HttpServletRequest request, BmsBillMemo bmsBillMemo) {
        System.out.println(request);
        String orderBy = "create_time desc";
        Page<BmsBillMemo> objects = PageHelper.startPage(bmsBillMemo.getCurrentPage(), bmsBillMemo.getPageSize(), orderBy);
        bmsBillMemoService.selectBmsBillMemoList(bmsBillMemo);
        return getDataTable(objects);
    }

    public TableDataInfo getDataTable(Page<?> objects) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(200);
        rspData.setRows(objects.getResult());
        rspData.setMsg("查询成功");
        rspData.setTotal(objects.getTotal());
        return rspData;
    }

 使用PageHelper.startPage方法的返回,获取集合及总件数。

方式二

    /**
     * 查询结算账单手账列表
     */
    @GetMapping("/list")
    public TableDataInfo list(HttpServletRequest request, BmsBillMemo bmsBillMemo) {
        System.out.println(request);
        String orderBy = "create_time desc";
        Page<BmsBillMemo> objects = PageHelper.startPage(bmsBillMemo.getCurrentPage(), bmsBillMemo.getPageSize(), orderBy);
        List<BmsBillMemo> list = bmsBillMemoService.selectBmsBillMemoList(bmsBillMemo);
        PageInfo pageInfo = new PageInfo(list,5);
        return getDataTable1(pageInfo);
    }
    public TableDataInfo getDataTable1(PageInfo objects) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(200);
        rspData.setRows(objects.getList());
        rspData.setMsg("查询成功");
        rspData.setTotal(objects.getTotal());
        return rspData;
    }

 使用pageinfo对象,和方式一的区别是,可以设置导航也信息,例如上面设置的5。也可以获取更多的信息。

4.注意

必须是调用查询方法之前就使用PageHelper.startPage,中间不能有其它的查询操作。因为PageHelper.startPage采用的是ThreadLocalL保存分页参数,然后在执行查询数据库sql时,通过拦截器PageInterceptor在sql语句中添加了分页参数,达到分页的目的,执行新的sql获取分页结果,最后在finally方法中清空ThreadLocalL。

所以这里PageHelper有个隐患,如果设置了PageHelper.startPage,之后的查询语句如果出现异常,就导致PageHelper中的ThreadLocalL仍然具有分页参数,如果此时有一个非分页的查询语句进来,这个时候就该查询就会被分页(而本不应该需要分页)。

可以在sql外面套一层try catch finally,在finally中执行下面的方法,清空分页参数的线程变量

PageHelper.clearPage();

还有一点,在多数据源的情况下,也要注意pagehelper的使用,默认它只会在一个数据源中起作用。

参照

多年以后,PageHelper 又深深的给我上了一课! 

springboot集成PageHelper_放牛的小牧童的博客-CSDN博客_pagehelper集成

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值