MyBatis Plus 分页
一、分页插件
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
1、添加配置类
@Configuration
public class MyConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));//添加乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}
2、测试
@Test
public void testPage() {Page<User> page = new Page<>(1, 5);Page<User> page1 = userService.page(page);System.out.println("总页数:"+page1.getPages());System.out.println("总记录数:"+page1.getTotal());System.out.println("当前页内容:"+page1.getRecords());System.out.println("当前页:"+page1.getCurrent());System.out.println("每页显示的条数:"+page1.getSize());System.out.println("是否有上一页:"+page1.hasPrevious());System.out.println("是否有下一页:"+page1.hasNext());
}
输出:
总页数:8
总记录数:39
当前页内容:[User(id=2, name=韩梅梅, age=28, email=123@qq.com), User(id=3, name=王刚, age=28, email=123@qq.com), User(id=4, name=张婷, age=28, email=123@qq.com), User(id=5, name=赵强, age=28, email=123@qq.com), User(id=6, name=孙丽, age=28, email=123@qq.com)]
当前页:1
每页显示的条数:5
是否有上一页:false
是否有下一页:true
二、XML 自定义分页
1、UserMapper 中自定义接口方法
/*** 自定义分页* @param page:传入分页对象进行分页,SQL中不需要对该参数进行处理* @param name:条件查询参数* @return*/
Page<User> myselfSelectPage(@Param("page") Page<User> page, @Param("name") String name);
2、UserMapper.xml 中编写SQL语句
注意xml文件位置,存放在 /resources/mappers/ 下
<?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.goose.mapper.UserMapper"><sql id="BaseColumns">id,`name`,age,email</sql><select id="myselfSelectPage" resultType="com.goose.entity.User">select <include refid="BaseColumns"/> from `user` where name like concat('%',#{name},'%')</select></mapper>
3、yml 配置文件
指定 .xml 配置文件位置
mybatis-plus:# 配置MyBatis日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 指定 .xml 配置文件位置mapper-locations: classpath*:mappers/*.xml
4、测试
@Test
public void testMyPage() {Page<User> page = new Page<>(1, 5);// ==> Preparing: SELECT COUNT(*) AS total FROM `user` WHERE name LIKE concat('%', ?, '%')// ==> Preparing: select id,`name`,age,email from `user` where name like concat('%',?,'%') LIMIT ?Page<User> page1 = userService.myselfSelectPage(page, "浩");System.out.println("总页数:"+page1.getPages());System.out.println("总记录数:"+page1.getTotal());System.out.println("当前页内容:"+page1.getRecords());
}
输出:
总页数:1
总记录数:2
当前页内容:[User(id=11, name=郑浩, age=28, email=123@qq.com), User(id=32, name=龚加浩, age=28, email=123@qq.com)]