1.分页插件

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

  • 添加配置类MyBatisPlusConfig

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Configuration
    @MapperScan("com.atguigu.mybatisplus.mapper")
    public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    //添加分页插件
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
    }
    }
  • 编写测试方法

    获取下面这些就足够了,提交到前端,前端会自己生成有关导航页的信息

    如果需要后端给响应的导航页的数据之类的,查阅mybatis的分页插件pageHelper

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Test
    public void testPage(){
    //new Page()中的两个参数分别是当前页码,每页显示数量
    Page<User> page = new Page<>(1 , 3);
    //null 表示全部都选
    userMapper.selectPage(page , null);

    //结果page最后也会被封装结果
    long current = page.getCurrent(); //页码
    long size = page.getSize(); //页容量
    List<User> records = page.getRecord(); //当前页的数据
    long total = page.getTotal(); //总条数
    }
  • 前端接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /* 
    需求说明
    查询全部数据页数据
    请求uri
    schedule/{pageSize}/{currentPage}
    请求方式
    get
    响应的json
    {
    "code":200,
    "flag":true,
    "data":{
    //本页数据
    data:
    [
    {id:1,title:'学习java',completed:true},
    {id:2,title:'学习html',completed:true},
    {id:3,title:'学习css',completed:true},
    {id:4,title:'学习js',completed:true},
    {id:5,title:'学习vue',completed:true}
    ],
    //分页参数
    pageSize:5, // 每页数据条数 页大小
    total:100 , // 总记录数
    currentPage:1 // 当前页码
    }
    }
    */

2.自定义分页

查询的条件不一样

  • UserMapper接口中定义一个方法

    1
    2
    3
    4
    5
    6
    7
    /**
    * 根据年龄查询用户列表,分页显示
    * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位
    * @param age 年龄
    * @return
    */
    Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
  • UserMapper.xml中编写SQL实现该方法

    1
    2
    3
    <select id="selectPageVo" resultType="User">
    select id,username as name,age,email from t_user where age > #{age}
    </select>
  • 编写测试方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Test
    public void testPageVo(){
    //这个Page对象是重点,相当于是新建了一个页面
    Page<User> page = new Page<User>(1 ,2);
    userMapper.selectPageVo(page , 20);


    //结果page最后也会被封装结果
    long current = page.getCurrent(); //页码
    long size = page.getSize(); //页容量
    List<User> records = page.getRecord(); //当前页的数据
    long total = page.getTotal(); //总条数
    }

new Page()中的两个参数分别是当前页码,每页显示数量