MyBatis 分页插件 PageHelper的用法

MyBatis 分页插件 PageHelper:

前期搭建好一个ssm项目: 略

1. 引入分页插件

1.1你可以从下面的地址中下载最新版本的 jar 包:(2选1+1)

https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/

http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/

由于使用了sql 解析工具,你还需要下载 jsqlparser.jar:

 

1.2或者使用 Maven

在 pom.xml 中添加如下依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>最新版本</version>
</dependency>

 2. 配置拦截器插件

 2.1. 在 MyBatis 配置 xml 中配置拦截器插件

 

    <!-- 配置分页拦截器插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--分页参数合理化-->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

 3.使用用例:

(这里介绍其中一种pageInfo的用法

  @RequestMapping("/retailerList.do")                 //pn初始值为1
    public String retailerList(@RequestParam(value = "pn",defaultValue = "1")Integer pn,
                                Model model){  
//引入PageHelper分页插件
  //在查询 之前只需要调用  传入页码以及每页大小
PageHelper.startPage(pn,5);   //从第pn页开始查,每页有五条数据
  //startPage后面紧跟的查询就是分页查询
  List<Retailer> retailerList = retailerService.find(map);
// 使用PageInfo包装查询后的结果 只需要将pageInfo交给页面就行了
  //分装了详细的页面信息 包括我们查询出来的数据    //连续显示一页
  PageInfo page = new PageInfo(retailerList,1);
  //传给页面
 model.addAttribute("pageInfo",page);
      return "retailerHome"; //转向首页
    }

上述代码解释:

 @RequestParam(value = "pn",defaultValue = "1")Integer pn  //pn为第几页 默认为第一页 

 PageHelper.startPage(pn,5); //从第pn页开始查,每页有五条数据

重点:  
//startPage后面紧跟的查询就是分页查询
ist<Retailer> retailerList = retailerService.find(map); //find的方法是我定义的查找所有用户的
PageInfo page = new PageInfo(retailerList,1);  //分装了详细的页面信息 包括我们查询出来的数据  连续显示1页
model.addAttribute("pageInfo",page);  //pageInfo里面包含了我们的所有数据

 

 

pageInfo.list : 就是我们从数据库查到的数据

 

使用PageInfo的用法:

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());

3.1在jsp中具体用法: 

${pageInfo.list}               //从数据库中查到的数据

${pageInfo.pageNum}   //当前在第几页

 

下面的都是pageInfo给我们提供的:

    //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;

    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总页数
    private int pages;

    //前一页
    private int prePage;
    //下一页
    private int nextPage;

    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;

 更多用法请参照:

 pageHelper中文文档:

https://pagehelper.github.io/docs/howtouse/

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值