步骤1:配置分页插件
//分页,在启动类中配置
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true); //合理化
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
步骤2:在mapper中写自定义的查询方法(其中EmployeeQueryObject中是分页和过滤条件)
IPage<Employee> selectPageSelf(IPage<Employee> page, @Param("qo") EmployeeQueryObject qo);
步骤3:在mapper.xml文件中按普通的过滤和查询, mybatis-plus 会帮我们分页
<select id="selectPageSelf" resultType="Employee">
select e.id, e.name, e.password, e.email, e.age, e.admin, e.dept_id, d.id d_id, d.name d_name, d.sn d_sn
from employee e left join department d on e.dept_id = d.id
<where>
<if test="keyword != null and keyword != ''">
and (e.name like concat('%',#{keyword},'%') or e.email like concat('%',#{keyword},'%'))
</if>
</where>
</select>
步骤4:在EmployeeServiceImpl中使用自定义的分页查询方法
@Override
public IPage<Employee> query(EmployeeQueryObject qo) {
IPage<Employee> page = new Page<>(qo.getCurrentPage(),qo.getPageSize());
return this.getBaseMapper().selectPageSelf(page,qo);
}
测试:
@Test
public void serviceTest() {
EmployeeQueryObject qo = new EmployeeQueryObject();
qo.setCurrentPage(3);
qo.setPageSize(5);
qo.setKeyword("li");
IPage<Employee> page = employeeService.query(qo);
System.out.println("当前页:" + page.getCurrent());
System.out.println("总页数:" + page.getPages());
System.out.println("每页显示条数:" + page.getSize());
System.out.println("总记录数:" + page.getTotal());
System.out.println("当前页显示记录:" + page.getRecords());
}