1.分页插件
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
-
导入mybatis-plus依赖
<!--mybatis-plus启动器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.27</version> </dependency>
-
添加配置类
MyBatisPlusConfig
@Configuration @MapperScan("com.atguigu.mybatisplus.mapper") public class MyBatisPlusConfig { //配置MybatisPlus的插件的 Interceptor:拦截器 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //添加分页插件 DbType:数据库类型 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
-
编写测试方法
@Test public void testPage(){ //new Page()中的两个参数分别是当前页码,每页显示数量 //SELECT id,name,age,email,is_deleted FROM t_user WHERE is_deleted=0 LIMIT ?,? Page<User> page = new Page<>(2,2); Page<User> userPage = userMapper.selectPage(page, null); System.out.println(userPage); List<User> users = page.getRecords();//分页后的数据 users.forEach(System.out::println); System.out.println("总页数:"+userPage.getPages()); System.out.println("总条数:"+userPage.getTotal()); System.out.println("当前页:"+userPage.getCurrent()); System.out.println("当前页显示条数:"+userPage.getSize()); System.out.println("是否有下一页:"+userPage.hasNext()); System.out.println("是否有上一页:"+userPage.hasPrevious()); }
2.自定义分页
上面调用的是MyBatis-Plus提供的带有分页的方法,那么我们自己定义的方法如何实现分页呢?
-
在
UserMapper
接口中定义一个方法/** * 根据年龄大于20的用户查询用户列表,分页显示 * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 * @param age 年龄 * @return */ Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age);
-
在
UserMapper.xml
中编写SQL实现该方法<select id="selectPageVo" resultType="User"> select id,username as name,age,email from t_user where age > #{age} </select>
-
编写测试方法
@Test public void testPageVo(){ Page<User> page = userMapper.selectPageVo(new Page<User>(1,2), 20); List<User> users = page.getRecords(); users.forEach(System.out::println); }
第二种写法
//自定义分页 根据年龄大于20的用户查询用户列表,分页显示 @Test public void testPageVo(){ Page<User> page = new Page<>(1,2); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.gt("age",20); userMapper.selectPage(page,queryWrapper); List<User> users = page.getRecords(); users.forEach(System.out::println); }