SSM框架MyBatis 三种分页查询 PageHlper的使用以及五个参数的简单解释

SSM框架MyBatis 三种简单的分页查询

1. 基础分页查询(环境在第一天的配置中有)

mapper也就是dao

  //查询总数
    @Select("select count(*) from book;")
    int selectCount();
    //分页查询
    @Select("select * from book limit #{currpage},#{size}")
    List<Book> selectPage(Map<String,Object> map);

测试类中调用

   //推荐基础分页查询
        //总记录数
        int count = bm.selectCount();
        //当前页(currpage)和每页的大小(size)
        int currpage = 3;
        int size = 2;
        //如果小于0则令其为1
        if(currpage <= 0)currpage = 1;
        //总页数
        int countpage = count % size == 0 ? count / size : count / size + 1;
        if (currpage > countpage) currpage = countpage;
        System.out.println("总记录数" + count + "总页数" + countpage + "当前" + currpage +"页" + "每页" + size +"条数据");
        Map<String,Object> map = new HashMap<>();
        map.put("currpage",currpage * size - size);
        map.put("size",size);
        List<Book> books = bm.selectPage(map);
        System.out.println(books);

测试结果
在这里插入图片描述

2. MaBatis自带的RowBounds类

不推荐使用 因为原理是查找全部然后装进一个容器中读取想要的行数

mapper
        //Mybatis分页器  不推荐
        @Select("select * from book")
        List<Book> selectRow(RowBounds row);
   //总记录数
        int count = bm.selectCount();
        //当前页(currpage)和每页的大小(size)
        int currpage = 3;
        int size = 2;
        //如果小于0则令其为1
        if(currpage <= 0)currpage = 1;
        //总页数
        int countpage = count % size == 0 ? count / size : count / size + 1;
        if (currpage > countpage) currpage = countpage;
  RowBounds rowBounds = new RowBounds(currpage * size - size,size);
        System.out.println(bm.selectRow(rowBounds));

3.插件PageHelper

通过MyBatis中的过滤器对查找所有的操作进行修改得到分页查询

3.1 配置依赖

 
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>5.3.2version>
        dependency>

3.2 配置文件中

spring 框架的入口文件

sf.setPlugins(new PageInterceptor());

SSM框架MyBatis 三种分页查询 PageHlper的使用以及五个参数的简单解释_第1张图片

3.3 分页查询

mapper

// 分页查询之PageHelpe
// @r
@Select("select * from book")
List<Book> query();

3.3.1 基础测试

第三页每页两条记录

 PageHelper.startPage(3,2);
        PageInfo<Book> bookPageInfo = new PageInfo<>(bm.query());
        List<Book> list = bookPageInfo.getList();
        System.out.println(Arrays.toString(list.toArray()));

在这里插入图片描述

3.3.2 id降序

  PageHelper.startPage(1,3,"bid desc");
        PageInfo<Book> bookPageInfo0 = new PageInfo<>(bm.query());
        System.out.println(bookPageInfo0.getList());

在这里插入图片描述

3.3.3 五个参数的解释

关于五个参数
第一个为 第几页
第二个为 每页的个数
第三个 是否查询总数
第四个 是否则正确判定(if 当前页为-1或者0 自动变为1)
第五个 若size为0且第五个参数为true 查询所有
(1)查询总数

PageHelper.startPage(1,2,true);
       PageInfo<Book> bookPageInfo1 = new PageInfo<>(bm.query());
       System.out.println( "(1)"+bookPageInfo1.getList());

结果
在这里插入图片描述

(2)加入正确处理页数操作

   PageHelper.startPage(0,2,true,true,true);
       PageInfo<Book> bookPageInfo2 = new PageInfo<>(bm.query());
       System.out.println( "(2)"+bookPageInfo2.getList());

在这里插入图片描述

(3)最后一个为true且size = 0则会查询所有

PageHelper.startPage(1,0,true,true,true);
        PageInfo<Book> bookPageInfo1 = new PageInfo<>(bm.query());
        System.out.println(bookPageInfo1.getList());

在这里插入图片描述

结果太长导致无法显示完毕

SSM框架MyBatis 三种分页查询 PageHlper的使用以及五个参数的简单解释_第2张图片

你可能感兴趣的:(mybatis,java,spring)