跳到主要内容

分页

分页查询

// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

要实现分页查询,需要添加配置类,在其配置类中添加分页拦截器

MybatisPlusConfig.java

@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

测试方法

@Autowired
private UserMapper userMapper;

@Test
void test() {
//设置分页参数,第一个参数为当前页,第二个参数为每页显示的条数
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.hasPrevious());
System.out.println("是否有下一页:"+page.hasNext());
}

返回的数据

提示

当前页:page.getCurrent()

每页显示的条数:page.getSize()

总记录数:page.getTotal()

总页数:page.getPages()

是否有上一页:page.hasPreviou()

是否有下一页:page.hasNext()

image-20231031183146748

image-20231031181307454

XML自定义分页

需求:分页查询年龄大于20的用户

UserMapper中定义方法:

@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 查询年龄大于age的用户并分页展示
* @param page 分页对象
* @param age 年龄
*/
Page<User> selectUserByAge(Page<User> page, Integer age);
}

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="top.hyqstudio.mapper.UserMapper">
<select id="selectUserByAge" resultType="top.hyqstudio.pojo.User">
select *
from user
where age > #{age}
</select>
</mapper>

测试方法:

@Autowired
private UserMapper userMapper;

@Test
void test() {
//设置分页参数
Page<User> page = new Page<>(1, 2);
userMapper.selectUserByAge(page, 20);
//获取分页数据
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.hasPrevious());
System.out.println("是否有下一页:" + page.hasNext());
}

image-20231101132910023