• pageHelper分页原理及实战


    mybatis插件-pageHelper是我们实际开发中常见的分页工具。

    一.PageHelper方法分页的原理

          PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数(pageIndex,pageSize),之后在查询执行的时候,获取当线程中的分页参数,执行查询的时候通过拦截器在sql语句中添加分页参数,之后实现分页查询,查询结束后在 finally 语句中清除ThreadLocal中的查询参数

    二.使用方法:

                         1.调用PageHelper方法:PageHelper.startPage(pageIndex, pageSize)

                         2. MyBatis 查询方法

           注意:只要你可以保证在PageHelper方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为PageHelper在finally代码段中自动清除了ThreadLocal存储的对象。


    三.具体使用项目案列:

    1.在api层中如下:

    2.在controller中如下:

    page<TbRptManage> myReport(String userId.Integer pageIndex,Integer pageSize){

    page<TbRptManage> myReportPage=cognosDisplayService.getMyReport(userId,pageIndex,pageSize);

    if(myReportPage.getTotal()>0){

    list<TbRptManage> menuVos=myReportPage.stream().map(po -> CopyUtils.copyProperties(po,TbRptManage.class)).

    collect(Collectors.toList());

    return  RestResponse.page(menuVos,PageInfo.instancefrom(myReportPage.toPageInfo()));

    }

    注解:

    ##steam():把一个源数据,可以是集合,数组,I/O channel, 产生器generator 等,转化成流。

    ##map():用于映射每个元素到对应的结果,以下代码片段使用 map 输出了元素对应的平方数:

    List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); // 获取对应的平方数

    List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

    ##Collectors(): 类实现了很多归约操作,例如将流转换成集合和聚合元素,Collectors 可用于返回列表或字符串:

      


    3.在serviceImpl层中,调用PageHelper.startPage(pageIndex,pageSize)方法,后跟查询语句,

    如图所示:

     

  • 相关阅读:
    FFmpeg编程(二)FFmpeg中级开发
    Oracle锁表与解锁 对象锁与解锁
    index_combine and index_john
    oracle hint
    SAR
    组播IP地址
    Linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包
    Linux服务器丢包故障的解决
    linux man page sections
    微服务架构统一安全认证设计与实践
  • 原文地址:https://www.cnblogs.com/libaowen609/p/12819648.html
Copyright © 2020-2023  润新知