目录
前言:
一、分页插件
1、添加配置类
(1)创建配置类方式:
(2)启动类中配置分页插件方式(推荐):
2、测试
二、XML自定义分页
1、UserMapper中定义接口方法
2、UserMapper.xml中编写SQL
编辑
3、测试
前言:
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能,当然也可以通过XML自定义实现分页功能,两种方法实现分页皆可。
一、分页插件
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
1、添加配置类
(1)创建配置类方式:
@Configuration
@MapperScan("com.qcby.mybatisplus.mapper") //可以将主类中的注解移到此处
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}
(2)启动类中配置分页插件方式(推荐):
也可以不创建配置类,直接将下述代码加到MybatisPlus启动类中即可:
@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
如下图所示:
2、测试
@Testpublic void testPage(){//设置分页参数Page<User> page = new Page<>(1, 2);userMapper.selectPage(page, null);//获取分页数据List<User> list = page.getRecords();list.forEach(System.out::println);System.out.println("当前页:"+page.getCurrent());System.out.println("每页显示的条数:"+page.getSize());System.out.println("总记录数:"+page.getTotal());System.out.println("总页数:"+page.getPages());System.out.println("当前页记录: " + page.getRecords());System.out.println("是否有上一页:"+page.hasPrevious());System.out.println("是否有下一页:"+page.hasNext());}
测试结果:
User(uid=2, name=admin, age=18, email=1234@qq.com, isDeleted=0)
User(uid=3, name=lisi, age=20, email=null, isDeleted=0)
当前页:1
每页显示的条数:2
总记录数:3
总页数:2
当前页记录: [User(uid=2, name=admin, age=18, email=1234@qq.com, isDeleted=0), User(uid=3, name=lisi, age=20, email=null, isDeleted=0)]
是否有上一页:false
是否有下一页:true
实现过程:
==> Preparing: SELECT COUNT(*) AS total FROM t_user WHERE is_deleted = 0
==> Parameters:
<== Columns: total
<== Row: 3
<== Total: 1
==> Preparing: SELECT uid,name,age,email,is_deleted FROM t_user WHERE is_deleted=0 LIMIT ?
==> Parameters: 2(Long)
<== Columns: uid, name, age, email, is_deleted
<== Row: 2, admin, 18, 1234@qq.com, 0
<== Row: 3, lisi, 20, null, 0
<== Total: 2
二、XML自定义分页
1、UserMapper中定义接口方法
public interface UserMapper extends BaseMapper<User> {/*** 根据年龄查询用户列表,分页显示* @param page 分页对象 ,xml中可以从里面进行取值 ,传递参数 Page 即自动分页 ,必须放在第一位* @param age 年龄* @return*/IPage<User> selectPageVo(@Param("page") Page<User> page, @Param("age") Integer age);
}
2、UserMapper.xml中编写SQL
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.qcby.mybatisPlus.mapper.UserMapper"><!-- 定义基础字段 SQL 片段 --><sql id="BaseColumns">uid, username, age, email</sql><!-- 自定义分页查询 --><!--IPage<User> selectPageVo(Page<User> page, Integer age);--><select id="selectPageVo" resultType="com.qcby.mybatisPlus.model.User">SELECT<include refid="BaseColumns"></include>FROM t_userWHERE age > #{age}</select></mapper>
3、测试
@Testpublic void testSelectPageVo() {//设置分页参数Page<User> page = new Page<>(1, 2);userMapper.selectPageVo(page,20);//获取分页数据List<User> list = page.getRecords();list.forEach(System.out::println);System.out.println("自定义分页");System.out.println("当前页:"+page.getCurrent());System.out.println("每页显示的条数:"+page.getSize());System.out.println("总记录数:"+page.getTotal());System.out.println("总页数:"+page.getPages());System.out.println("当前页记录: " + page.getRecords());System.out.println("是否有上一页:"+page.hasPrevious());System.out.println("是否有下一页:"+page.hasNext());}
查看结果是否正确即可,此处不再放实验结果。