pagehelper分页查询
发布时间
阅读量:
阅读量
pagehelper分页查询
该插件是MyBatis框架中提供的分页工具。它支持Oracle、Mysql、MariaDB、SQLite、Hsqldb及PostgreSQL六种主流数据库。通过调用该插件即可轻松实现分页查询。在SQL语句生成前调用startPage方法,并指定当前页码和每页显示的条数参数即可。例如,在第一次请求时调用startPage(1,20)即可表示请求第一页,并且每页将返回20条数据。
1.pom文件
引入 pagehelper pom文件
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
xml
2.Controller
当控制层接收到来自客户端的'/page'请求时, 将前端发送过来的参数按照指定的格式转换为EmployeePageQueryDTO对象
调用service层
/** * 员工分页查询
* @param employeePageQueryDTO
* @return
*/
@GetMapping("/page")
@ApiOperation("员工分页查询")
public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) {
log.info("员工分页查询,参数为: {}", employeePageQueryDTO);
PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
return Result.success(pageResult);
}
java

2.PageResult
封装的分页查询结果
/** * 封装分页查询结果
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult implements Serializable {
private long total; //总记录数
private List records; //当前页数据集合
}
java

3.EmployeePageQueryDTO
封装的前台传递过来的数据
@Data
public class EmployeePageQueryDTO implements Serializable {
//员工姓名
private String name;
//页码
private int page;
//每页显示记录数
private int pageSize;
}
java
4.Service
/** * 分页查询
* @param employeePageQueryDTO
* @return
*/
PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
java
5.ServiceImpl
调用PageHelper方法进行分页查询
需要两个参数 页码,和每一页展示的数量个数
/** * 分页查询
* @param employeePageQueryDTO
* @return
*/
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
//开始分页查询
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> result = page.getResult();
return new PageResult(total, result);
}
java

6.Employee
员工的实体类
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String username;
private String name;
private String password;
private String phone;
private String sex;
private String idNumber;
private Integer status;
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
private Long createUser;
private Long updateUser;
}
java

7.mapper
/** * 分页查询
* @param employeePageQueryDTO
* @return
*/
Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
java
8.mapper.xml
PageHelper会自动的补全sql代码
<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>
xml
控制台输出记录
2023-10-10 22:37:55.033 INFO 18988 --- [nio-8080-exec-5] c.s.controller.admin.EmployeeController : 员工分页查询,参数为: EmployeePageQueryDTO(name=null, page=1, pageSize=10)
2023-10-10 22:37:55.239 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT : ==> Preparing: SELECT count(0) FROM employee
2023-10-10 22:37:55.240 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT : ==> Parameters:
2023-10-10 22:37:55.246 DEBUG 18988 --- [nio-8080-exec-5] c.s.m.EmployeeMapper.pageQuery_COUNT : <== Total: 1
2023-10-10 22:37:55.250 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery : ==> Preparing: select * from employee order by create_time desc LIMIT ?
//这里显示了 自动补全的代码LIMIT
2023-10-10 22:37:55.252 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery : ==> Parameters: 10(Integer)
2023-10-10 22:37:55.256 DEBUG 18988 --- [nio-8080-exec-5] com.sky.mapper.EmployeeMapper.pageQuery : <== Total: 4
java

全部评论 (0)
还没有任何评论哟~
