第二个接口-分页查询
业务规则
1.根据页码展示员工信息。
2.每页展示10条数据。
3.分页查询时,可以根据需要,输入员工姓名进行查询。
请求方式:GET
提交参数
页码、每页记录数、员工姓名
响应数据
当前页记录,总记录数
返回数据
返回数据包含code、msg、data
data又饱含total(总数)、records(当前记录页要展示的数据集合)
注:records可以用employee实体类封装。单表数据查询操作。
代码实现
1.先定义了返回实体PageResult,包含total,records。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult implements Serializable {
private long total; //总记录数
private List records; //当前页数据集合
}
2.定义了接收实体dto
@Data
public class EmployeePageQueryDTO implements Serializable {
//员工姓名
private String name;
//页码
private int page;
//每页显示记录数
private int pageSize;
}
controller
@GetMapping("/page")
public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){
log.info("员工分页查询:参数为{}",employeePageQueryDTO);
PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
return Result.success(pageResult);
}
service实现类
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
//select * from employee limit 1,10
//使用插件做分页查询,把页码和每页的记录数传给PageHelper
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> records = page.getResult();
return new PageResult(total, records);
}
}
mapper
<?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.sky.mapper.EmployeeMapper">
<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>
</mapper>