Javaweb之SpringBootWeb案例员工管理分页查询的详细解析

这篇具有很好参考价值的文章主要介绍了Javaweb之SpringBootWeb案例员工管理分页查询的详细解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3. 员工管理

完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

基于以上原型,我们可以把员工管理功能分为:

  1. 分页查询(今天完成)

  2. 带条件的分页查询(今天完成)

  3. 删除员工(今天完成)

  4. 新增员工(后续完成)

  5. 修改员工(后续完成)

那下面我们就先从分页查询功能开始学习。

3.1 分页查询

3.1.1 基础分页
3.1.1.1 需求分析

我们之前做的查询功能,是将数据库中所有的数据查询出来并展示到页面上,试想如果数据库中的数据有很多(假设有十几万条)的时候,将数据全部展示出来肯定不现实,那如何解决这个问题呢?

使用分页解决这个问题。每次只展示一页的数据,比如:一页展示10条数据,如果还想看其他的数据,可以通过点击页码进行查询。

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

要想从数据库中进行分页查询,我们要使用LIMIT关键字,格式为:limit 开始索引 每页显示的条数

查询第1页数据的SQL语句是:

select * from emp  limit 0,10;

查询第2页数据的SQL语句是:

select * from emp  limit 10,10;

查询第3页的数据的SQL语句是:

select * from emp  limit 20,10;

观察以上SQL语句,发现: 开始索引一直在改变 , 每页显示条数是固定的

开始索引的计算公式: 开始索引 = (当前页码 - 1) * 每页显示条数

我们继续基于页面原型,继续分析,得出以下结论:

  1. 前端在请求服务端时,传递的参数

    • 当前页码 page

    • 每页显示条数 pageSize

  2. 后端需要响应什么数据给前端

    • 所查询到的数据列表(存储到List 集合中)

    • 总记录数

    • Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

后台给前端返回的数据包含:List集合(数据列表)、total(总记录数)

而这两部分我们通常封装到PageBean对象中,并将该对象转换为json格式的数据响应回给浏览器。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {
private Long total; //总记录数
private List rows; //当前页数据列表
}
3.1.1.2 接口文档

员工列表查询

  • 基本信息

    请求路径:/emps
    ​
    请求方式:GET
    ​
    接口描述:该接口用于员工列表数据的条件分页查询
  • 请求参数

    参数格式:queryString

    参数说明:

    参数名称 是否必须 示例 备注
    name 姓名
    gender 1 性别 , 1 男 , 2 女
    begin 2010-01-01 范围匹配的开始时间(入职日期)
    end 2020-01-01 范围匹配的结束时间(入职日期)
    page 1 分页查询的页码,如果未指定,默认为1
    pageSize 10 分页查询的每页记录数,如果未指定,默认为10

    请求数据样例:

    /emps?name=张&gender=1&begin=2007-09-01&end=2022-09-01&page=1&pageSize=10
  • 响应数据

    参数格式:application/json

    参数说明:

    名称 类型 是否必须 默认值 备注 其他信息
    code number 必须 响应码, 1 成功 , 0 失败
    msg string 非必须 提示信息
    data object 必须 返回的数据
    |- total number 必须 总记录数
    |- rows object [] 必须 数据列表 item 类型: object
    |- id number 非必须 id
    |- username string 非必须 用户名
    |- name string 非必须 姓名
    |- password string 非必须 密码
    |- entrydate string 非必须 入职日期
    |- gender number 非必须 性别 , 1 男 ; 2 女
    |- image string 非必须 图像
    |- job number 非必须 职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师
    |- deptId number 非必须 部门id
    |- createTime string 非必须 创建时间
    |- updateTime string 非必须 更新时间

    响应数据样例:

    {
      "code": 1,
      "msg": "success",
      "data": {
        "total": 2,
        "rows": [
           {
            "id": 1,
            "username": "jinyong",
            "password": "123456",
            "name": "金庸",
            "gender": 1,
            "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
            "job": 2,
            "entrydate": "2015-01-01",
            "deptId": 2,
            "createTime": "2022-09-01T23:06:30",
            "updateTime": "2022-09-02T00:29:04"
          },
          {
            "id": 2,
            "username": "zhangwuji",
            "password": "123456",
            "name": "张无忌",
            "gender": 1,
            "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
            "job": 2,
            "entrydate": "2015-01-01",
            "deptId": 2,
            "createTime": "2022-09-01T23:06:30",
            "updateTime": "2022-09-02T00:29:04"
          }
        ]
      }
    }
3.1.1.3 思路分析

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

分页查询需要的数据,封装在PageBean对象中:

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

3.1.1.4 功能开发

通过查看接口文档:员工列表查询

请求路径:/emps

请求方式:GET

请求参数:跟随在请求路径后的参数字符串。 例:/emps?page=1&pageSize=10

响应数据:json格式

EmpController

import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
​
@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
​
    @Autowired
    private EmpService empService;
​
    //条件分页查询
    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize) {
        //记录日志
        log.info("分页查询,参数:{},{}", page, pageSize);
        //调用业务层分页查询功能
        PageBean pageBean = empService.page(page, pageSize);
        //响应
        return Result.success(pageBean);
    }
}

@RequestParam(defaultValue="默认值") //设置请求参数默认值

EmpService

public interface EmpService {
    /**
     * 条件分页查询
     * @param page 页码
     * @param pageSize 每页展示记录数
     * @return
     */
    PageBean page(Integer page, Integer pageSize);
}

EmpServiceImpl

import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
​
@Slf4j
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;
​
    @Override
    public PageBean page(Integer page, Integer pageSize) {
        //1、获取总记录数
        Long count = empMapper.count();
​
        //2、获取分页查询结果列表
        Integer start = (page - 1) * pageSize; //计算起始索引 , 公式: (页码-1)*页大小
        List<Emp> empList = empMapper.list(start, pageSize);
​
        //3、封装PageBean对象
        PageBean pageBean = new PageBean(count , empList);
        return pageBean;
    }
}

EmpMapper

@Mapper
public interface EmpMapper {
    //获取总记录数
    @Select("select count(*) from emp")
    public Long count();
​
    //获取当前页的结果列表
    @Select("select * from emp limit #{start}, #{pageSize}")
    public List<Emp> list(Integer start, Integer pageSize);
}
3.1.1.5 功能测试

功能开发完成后,重新启动项目,使用postman,发起POST请求:

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java

3.1.1.6 前后端联调

打开浏览器,测试后端功能接口:

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析,Web,mybatis,mysql,spring,spring boot,java文章来源地址https://www.toymoban.com/news/detail-791848.html

到了这里,关于Javaweb之SpringBootWeb案例员工管理分页查询的详细解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Javaweb之SpringBootWeb案例之切入点表达式的详细解析

    3.3 切入点表达式 从AOP的入门程序到现在,我们一直都在使用切入点表达式来描述切入点。下面我们就来详细的介绍一下切入点表达式的具体写法。 切入点表达式: 描述切入点方法的一种表达式 作用:主要用来决定项目中的哪些方法需要加入通知 常见形式: execution(……):

    2024年02月21日
    浏览(35)
  • javaweb项目案例:员工管理系统

    使用Javaweb+MySQL实现一个员工管理系统,能对员工进行增删改查,使用SSH框架开发。 manager(管理员表) employee(员工表) systeminfo(系统表) 使用SSH框架开发,使用MySQL数据库。 action:控制器包 dao:数据操作接口 dao.Impl:数据操作实现工具包 po:实体类包 service:服务包 ut

    2024年02月11日
    浏览(34)
  • 【JavaWeb后端开发-第六章(1)】SpringBootWeb案例

         前面我们已经讲解了Web前端开发的基础知识,也讲解了Web后端开发的基础(HTTP协议、请求响应),并且也讲解了数据库MySQL,以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来,我们就通过一个案例,来将前端开发、后端开发、数据库整合起来。 而这个案例

    2024年02月02日
    浏览(41)
  • 【JavaWeb后端开发-第六章(2)】SpringBootWeb案例

    前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能,还有两个需要实现:     ♦ 新增员工     ♦ 修改员工     首先我们先完成\\\"新增员工\\\"的功能开发,再完成\\\"修改员工\\\"的功能开发。而在\\\"新增员工\\\"中,需要添加头像,而头像需

    2024年01月16日
    浏览(35)
  • [JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)

    目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库表  1.2.2 创建springboot工程 1.2.3 配置application.properties 准备对应实体类  1.2.3.1 application.properties  1.2.3.2 实体类  1.2.3.2.1 Emp类  1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、Service(接口实现类)、Controller基础结构 1.2.4.1 Mapper

    2024年02月11日
    浏览(37)
  • 【JavaWeb后端开发-第六章(3)】SpringBootWeb案例—登录认证

        在前面的章节中,我们已经实现了 部门管理 、 员工管理 的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是 登录认证 。 最终我们要实现的效果就是用户必须登录之后,才可以访

    2024年01月19日
    浏览(38)
  • 【JavaWeb后端开发-第六章(4)】SpringBootWeb案例—事务&AOP

        在数据库阶段我们已学习过事务了,我们讲到:      事务 是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。     怎么样来控制这组

    2024年01月19日
    浏览(43)
  • 【外卖系统】员工信息分页查询

    当数据较多时,如果将数据在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般系统都会以分页的方式来展示列表数据。 页面发送ajax请求,将分页查询参数( page 、 pageSize 、 name )提交到服务端 服务端 Controller 接收页面提交的数据并调用 Service 查询数据 Serv

    2024年02月15日
    浏览(26)
  • Javaweb实现员工信息管理系统

    1、项目用到的技术栈 开发工具:idea 语言:java、js、html+ajax 数据库:MySQL 服务器:Tomcat 框架:mybatis、jQuery、layui 2、项目实现功能 管理员、部门负责人、员工登录和退出功能以及用户注册功能(根据不同的账号密码进入不同的页面,注册页面以及登录都有校验 管理员可查看

    2024年02月11日
    浏览(27)
  • JavaWeb12(实现基础分页&模糊查询的分页)

    目录 一. 效果预览 ​编辑 二. 实现基本分页 2.1 分页sql  --每页3条  取第二页 --由于伪列不能作用与大于符号也不能作用于between....and --因此需要将伪列-----名列  2.2 万能公式  2.3 首页上一页下一页实现 ②前端代码 2.4 末页实现优化 ①底层代码 ②前端优化  三.实现模糊查询

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包