黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(2)员工管理|分页查询、分页查询(带条件)

发布时间:2024年01月11日

指路(1)准备工作、部门管理链接👇黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理-CSDN博客icon-default.png?t=N7T8https://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映射文件,其三点规范为:

  1. 同包同名(与EmpMapper接口需要同包同名);
  2. namespace属性要与EmpMapper接口的全类名保持一致;
  3. 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:遍历结束后拼接的片段

删除结果:

前后端联调:

文章来源:https://blog.csdn.net/YOYU_/article/details/135491233
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。