首先通过Controller来调用Service接口
@GetMapping("/page")
@ApiOperation("分页查询员工")
public Result page(EmployeePageQueryDTO employeePageQueryDTO) {
log.info("分页查询差数:{}", employeePageQueryDTO);
PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
return Result.success(pageResult);//返回pageResult封装的,带有查询结果的对象给前端
}
实现Service接口
/**
* 分页查询
* @param employeePageQueryDTO
* @return
*/
@Override
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
//select * from employee limit 0 ,10 分页查询的本质
//开始分页查询
//使用分页查询插件pageHelper,startPage方法中只需要:查询第几页,每页的大小
PageHelper.startPage(employeePageQueryDTO.getPage(),
employeePageQueryDTO.getPageSize());
//调用持久层的查询方法,并用实体类Page封装
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
//将查询结果返回
return new PageResult(page.getTotal() ,page.getResult());
}
实体类补充:Page是PageHelper自带的实体类,封装了getTotal() 和getResult(),分别是当页总记录数和当页数据集合
持久层通过mybatis,mybatisX实现查询
Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
<select id="pageQuery" resultType="com.sky.entity.Employee">
select * from employee
<where>
<if test="name != null and name != ''">
and name like concat('%' ,#{name} ,'%')
</if>
</where>
order by create_time desc
</select>
总结:PageHelper,底层实现了分页操作,大大简化了持久层操作,只需查询一下整张表即可。