分页查询-PageHelper底层原理分析以及使用PageHelper的步骤

当前页面 + 每页记录数 如何拼接?

  1. 调用startPage

 

  2.将分页参数存入TreadLocal本地线程对象setLocalPage(将数据存起来)

 

 

   3.设置分页后,会被拦截

 

 

 

  4.执行分页查询

 

 

 

 

  5.拼接分页sql语句

 

 

 

  6.最后调用mybatis查询获取结果,返回页面

 

 

如何使用PageHelper呢?

1、在dao层的resource目录下创建sqlMapConfig.xml文件,在配置文件中配置以下内容,目的是在操作数据库之前进行拦截

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>


2、在业务逻辑代码中调用startPage方法
  2.1:PageHelper.startPage(CurrentPage,PageSize);
    a.PageHelper类的使用需要引入依赖或者jar包
    b.需要传入的参数:CurrentPage:当前页是多少
             PageSize  :每页显示多少条

 3、dao层调用方法,执行sql语句

    3.1:Page<CheckGroup> page = dao.findPage(queryString);
      a.传入的参数:查询条件,一般前端查询的时候会附带一个查询框,如果查询框有查询条件则会传输到后端,进行模糊匹配查询(注意,查询条件有可能为空,所以sql语句一定要做非空判断再加查询条件)
      b.返回值:返回值可以是自己选择的容器,只要能装下查询出来的数据就行,也可以用上面的Page类,指定可以装查询出来的数据的pojo类
      c.如果是用的Page类,那么用这个类的对象.get就能获取到所需要的总条数、分页查询的数据,至于获取出来怎么处理,就需要根据前端需求决定了

 

posted @ 2020-10-12 16:29  名难  阅读(1845)  评论(0编辑  收藏  举报