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)方法,后跟查询语句,

    如图所示:

     

  • 相关阅读:
    PyQt QFontDialog显示中文
    zetcode :: First programs in PyQt5
    PyQt4 初试牛刀二
    PyQt5实现透明电子时钟
    配置web.xml和glassfish容器实现javaEE表单验证
    nodejs querystring踩坑笔记----只能用于表单提交
    使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制
    CAS单点登录(SSO)服务端的部署和配置---连接MySQL进行身份认证
    Oracle中碰到的函数和关键字收集
    windows系统局域网内开启远程桌面图解
  • 原文地址:https://www.cnblogs.com/libaowen609/p/12819648.html
Copyright © 2011-2022 走看看