指路(1)准备工作、部门管理链接👇黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理-CSDN博客https://blog.csdn.net/YOYU_/article/details/135476566?spm=1001.2014.3001.5501
?前端需要给服务端传递的参数有:
后端需要给前端返回的参数有:
返回的两项数据类型不一致,返回类型是唯一的,所以需要将这两个参数一同封装在一个实体类PageBean里面,一起返回。
创建实体类过程中,只需要写属性名即可,其余的get,set方法,无参构造和有参构造都可以通过注解的方式获得。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
//属性名和接口文档保持一致
private long total;//总记录数
private List rows;//数据列表
}
下图为api文档的前端请求参数:
参数一:表示起始索引
参数二:表示每页展示的记录数
两个参数的关系:起始索引 = (页码 - 1)* 每页展示的记录数
代码编写过程中,start表示起始索引,page表示页码,pageSize表示每页展示的记录数
首先引入PageHelper的相关依赖
<!-- PageHelper分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
接着重写EmpMapper方法和EmpService方法,对于EmpController方法不需要重写,因为Controller只是和前端交互,在后端更改代码的时候,不需要进行改动。
EmpService实现类
@Override
public PageBean page(Integer page, Integer pageSize) {
//1.设置分页参数
PageHelper.startPage(page, pageSize);
//2.执行查询
List<Emp> list = empMapper.list();
//list是分页查询结果的封装类page类型
Page<Emp> p = (Page<Emp>) list;
//3.封装PageBean对象
PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
return pageBean;
}
EmpMapper
@Select("select * from emp")
public List<Emp> list();
条件查询:动态SQL-XML映射文件
分页查询:PageHelper分页插件
动态SQL,需要定义xml映射文件,其三点规范为:
👆同包同名
<?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">
👆xml文件上的约束
👆全类名获取方式
👆resultType代表的是单条记录封装的类型,此处为Emp这个实体类,拷贝其全类名
动态SQL:<foreach>标签
collection:集合名称ids
item:集合遍历出来的元素、项id
separator:每一次遍历使用的分隔符
open:遍历开始前拼接的片段
close:遍历结束后拼接的片段