
黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(2)员工管理|分页查询、分页查询(带条件)
指路(1)准备工作、部门管理链接👇黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理-CSDN博客。
指路(1)准备工作、部门管理链接👇黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理-CSDN博客https://blog.csdn.net/YOYU_/article/details/135476566?spm=1001.2014.3001.5501
三、员工管理
1.分页查询
思路流程:
前端需要给服务端传递的参数有:
- 当前页码:page
- 每页展示记录数:pageSize
后端需要给前端返回的参数有:
- 数据列表:List
- 总记录数:total
返回的两项数据类型不一致,返回类型是唯一的,所以需要将这两个参数一同封装在一个实体类PageBean里面,一起返回。
代码编写:
创建实体类过程中,只需要写属性名即可,其余的get,set方法,无参构造和有参构造都可以通过注解的方式获得。
1)@Data:提供了更综合的生成代码功能(@Getter+@Setter+@ToString+@EqualAndHashCode)
2)@NoArgsConstructor:为实体类生成无参的构造器
3)@AllArgsConstructor:为实体类生成除了static修饰的字段之外带有各参数的构造器方法
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
//属性名和接口文档保持一致
private long total;//总记录数
private List rows;//数据列表
}
4)@RequestParam:其中的defaultValue属性设置默认值
下图为api文档的前端请求参数:
5)limit后面两个参数的含义:
参数一:表示起始索引
参数二:表示每页展示的记录数
两个参数的关系:起始索引 = (页码 - 1)* 每页展示的记录数
代码编写过程中,start表示起始索引,page表示页码,pageSize表示每页展示的记录数
查询结果:
前后端联调:
分页插件PageHelper:简化原始繁琐代码
首先引入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();
2.分页查询(带条件)
思路流程:
条件查询:动态SQL-XML映射文件
分页查询:PageHelper分页插件
代码编写:
1)@DateTimeFormat:属性pattern用来指定前端传来的日期格式
动态SQL,需要定义xml映射文件,其三点规范为:
- 同包同名(与EmpMapper接口需要同包同名);
- namespace属性要与EmpMapper接口的全类名保持一致;
- xml文件里面sql语句的id需要与EmpMapper接口的方法名保持一致,并且保持返回的类型resultType一致。
👆同包同名
<?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这个实体类,拷贝其全类名
查询结果:
前后端联调:
3.删除员工
代码编写:
动态SQL:<foreach>标签
collection:集合名称ids
item:集合遍历出来的元素、项id
separator:每一次遍历使用的分隔符
open:遍历开始前拼接的片段
close:遍历结束后拼接的片段
删除结果:
前后端联调:
更多推荐
所有评论(0)