zoukankan      html  css  js  c++  java
  • 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)方法,后跟查询语句,

    如图所示:

     

  • 相关阅读:
    HSTS详解
    cdnbest 节点和主控连接不上原因主要查看几点
    正则表达式30分钟入门教程
    cdn贝四层协议配置端口映射TCP端口转发
    关于HSTS安全协议的全面详细解析
    cdnbest配置强制ssl跳转
    THUWC2020游记
    2019 CSP-S Day2-T1 Emiya 家今天的饭(DP)
    网络流之费用流(最小费用最大流) 学习笔记
    网络流之最大流 学习笔记
  • 原文地址:https://www.cnblogs.com/libaowen609/p/12819648.html
Copyright © 2011-2022 走看看