找回密码
 立即注册
查看: 21|回复: 0

JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之条件分页查询

[复制链接]

73

主题

3

精华

77

金币

技术维护QQ:515138

积分
165
发表于 6 天前 | 显示全部楼层 |阅读模式
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之条件分页查询
1.png
基础版(待优化):
C层:
  1. package com.zidiu.controller;
  2. import com.zidiu.pojo.Emp;
  3. import com.zidiu.pojo.PageResult;
  4. import com.zidiu.pojo.Result;
  5. import com.zidiu.service.EmpService;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.format.annotation.DateTimeFormat;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import java.time.LocalDate;
  14. @RequestMapping("/emps")
  15. @Slf4j
  16. @RestController
  17. public class EmpController {
  18.     @Autowired
  19.     private EmpService empService;
  20.     /**
  21.      * 查询员工列表带分页
  22.      */
  23.     @GetMapping
  24.     public Result page(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "5") Integer pageSize, String name, Integer gender, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate begin,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
  25.         log.info("查询员工信息,参数: page: {}, pageSize: {}, name: {}, gender: {}, begin: {}, end: {}", page, pageSize, name, gender, begin, end);
  26.         PageResult<Emp> pageResult = empService.page(page, pageSize, name, gender, begin, end);
  27.         return Result.success(pageResult);
  28.     }
  29. }
复制代码
S层:
  1. package com.zidiu.service;
  2. import com.zidiu.pojo.Emp;
  3. import com.zidiu.pojo.PageResult;
  4. import java.time.LocalDate;
  5. import java.util.List;
  6. public interface EmpService {
  7.       /**
  8.      * 分页查询
  9.      * @param page 页码
  10.      * @param pageSize 每页记录数
  11.      */
  12.     PageResult<Emp> page(Integer page, Integer pageSize, String name, Integer gender, LocalDate begin, LocalDate end);
  13. }
复制代码
实现层:
  1. package com.zidiu.service.impl;
  2. import com.github.pagehelper.Page;
  3. import com.github.pagehelper.PageHelper;
  4. import com.zidiu.mapper.EmpMapper;
  5. import com.zidiu.pojo.Emp;
  6. import com.zidiu.pojo.PageResult;
  7. import com.zidiu.service.EmpService;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.time.LocalDate;
  11. import java.util.List;
  12. @Service
  13. public class EmpServiceImpl implements EmpService {
  14.     @Autowired
  15.     private EmpMapper empMapper;
  16.     /**
  17.      * 查询员工列表
  18.      */
  19.     @Override
  20.     public PageResult<Emp> page(Integer page, Integer pageSize, String name, Integer gender, LocalDate begin, LocalDate end) {
  21.         //1. 设置分页参数,页码和每页记录数
  22.         PageHelper.startPage(page,pageSize);
  23.         //2. 执行查询
  24.         List<Emp> empList = empMapper.list(name, gender, begin, end);
  25.         Page<Emp> p = (Page<Emp>) empList;
  26.         //3. 封装结果
  27.         return new PageResult<Emp>(p.getTotal(), p.getResult());
  28.     }
  29. }
复制代码
M层:
  1. package com.zidiu.mapper;
  2. import com.zidiu.pojo.Emp;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Select;
  5. import java.time.LocalDate;
  6. import java.util.List;
  7. @Mapper
  8. public interface EmpMapper {
  9.     /**
  10.      * 查询所有的员工及其对应的部门名称
  11.      */
  12.     List<Emp> list(String name, Integer gender, LocalDate begin, LocalDate end);
  13. }
复制代码
X层:
  1. <!--定义Mapper映射文件的约束和基本结构-->
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.zidiu.mapper.EmpMapper">
  6.     <select id="list" resultType="com.zidiu.pojo.Emp">
  7.         select e.*, d.name deptName from emp as e left join dept as d on e.dept_id = d.id
  8.         where e.name like concat('%',#{name},'%')
  9.           and e.gender = #{gender}
  10.           and e.entry_date between #{begin} and #{end}
  11.     </select>
  12. </mapper>
复制代码
优化版:==================================
实体类,添加一个接收参数类作为实体封装:
  1. package com.zidiu.pojo;
  2. import lombok.Data;
  3. import org.springframework.format.annotation.DateTimeFormat;
  4. import java.time.LocalDate;
  5. @Data
  6. public class EmpQueryParam {
  7.     private Integer page = 1; //页码
  8.     private Integer pageSize = 10; //每页展示记录数
  9.     private String name; //姓名
  10.     private Integer gender; //性别
  11.     @DateTimeFormat(pattern = "yyyy-MM-dd")
  12.     private LocalDate begin; //入职开始时间
  13.     @DateTimeFormat(pattern = "yyyy-MM-dd")
  14.     private LocalDate end; //入职结束时间
  15. }
复制代码
C层:
  1. package com.zidiu.controller;
  2. import com.zidiu.pojo.Emp;
  3. import com.zidiu.pojo.EmpQueryParam;
  4. import com.zidiu.pojo.PageResult;
  5. import com.zidiu.pojo.Result;
  6. import com.zidiu.service.EmpService;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.format.annotation.DateTimeFormat;
  10. import org.springframework.web.bind.annotation.GetMapping;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import java.time.LocalDate;
  15. @RequestMapping("/emps")
  16. @Slf4j
  17. @RestController
  18. public class EmpController {
  19.     @Autowired
  20.     private EmpService empService;
  21.     /**
  22.      * 查询员工列表带分页
  23.      */
  24.     @GetMapping
  25.     public Result page(EmpQueryParam empQueryParam) {
  26.         log.info("查询请求参数: {}", empQueryParam);
  27.         PageResult pageResult = empService.page(empQueryParam);
  28.         return Result.success(pageResult);
  29.     }
  30. }
复制代码
S层:
  1. package com.zidiu.service;
  2. import com.zidiu.pojo.Emp;
  3. import com.zidiu.pojo.EmpQueryParam;
  4. import com.zidiu.pojo.PageResult;
  5. import java.time.LocalDate;
  6. import java.util.List;
  7. public interface EmpService {
  8.       /**
  9.      * 分页查询
  10.      */
  11.     PageResult<Emp> page(EmpQueryParam empQueryParam);
  12. }
复制代码
实现层:
  1. package com.zidiu.service.impl;
  2. import com.github.pagehelper.Page;
  3. import com.github.pagehelper.PageHelper;
  4. import com.zidiu.mapper.EmpMapper;
  5. import com.zidiu.pojo.Emp;
  6. import com.zidiu.pojo.EmpQueryParam;
  7. import com.zidiu.pojo.PageResult;
  8. import com.zidiu.service.EmpService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.time.LocalDate;
  12. import java.util.List;
  13. @Service
  14. public class EmpServiceImpl implements EmpService {
  15.     @Autowired
  16.     private EmpMapper empMapper;
  17.     /**
  18.      * 查询员工列表
  19.      */
  20.     @Override
  21.     public PageResult page(EmpQueryParam empQueryParam) {
  22.         //1. 设置PageHelper分页参数
  23.         PageHelper.startPage(empQueryParam.getPage(), empQueryParam.getPageSize());
  24.         //2. 执行查询
  25.         List<Emp> empList = empMapper.list(empQueryParam);
  26.         //3. 封装分页结果
  27.         Page<Emp> p = (Page<Emp>)empList;
  28.         return new PageResult(p.getTotal(), p.getResult());
  29.     }
  30. }
复制代码
M层:
  1. package com.zidiu.mapper;
  2. import com.zidiu.pojo.Emp;
  3. import com.zidiu.pojo.EmpQueryParam;
  4. import org.apache.ibatis.annotations.Mapper;
  5. import org.apache.ibatis.annotations.Select;
  6. import java.time.LocalDate;
  7. import java.util.List;
  8. @Mapper
  9. public interface EmpMapper {
  10.     /**
  11.      * 查询所有的员工及其对应的部门名称
  12.      */
  13.     List<Emp> list(EmpQueryParam empQueryParam);
  14. }
复制代码
X层:
  1. <!--定义Mapper映射文件的约束和基本结构-->
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.zidiu.mapper.EmpMapper">
  6.     <select id="list" resultType="com.zidiu.pojo.Emp">
  7.         select e.*, d.name deptName from emp as e left join dept as d on e.dept_id = d.id
  8.         <where>
  9.             <if test="name != null and name != ''">
  10.                 e.name like concat('%',#{name},'%')
  11.             </if>
  12.             <if test="gender != null">
  13.                 and e.gender = #{gender}
  14.             </if>
  15.             <if test="begin != null and end != null">
  16.                 and e.entry_date between #{begin} and #{end}
  17.             </if>
  18.         </where>
  19.     </select>
  20. </mapper>
复制代码
在这里呢,我们用到了两个动态SQL的标签:<if>  <where>。 这两个标签的具体作用如下:
<if>:判断条件是否成立,如果条件为true,则拼接SQL。
<where>根据查询条件,来生成where关键字,并会自动去除条件前面多余的and或or。

配置层:
  1. spring:
  2.   application:
  3.     name: tlias-web-management
  4.   #mysql连接配置
  5.   datasource:
  6.     driver-class-name: com.mysql.cj.jdbc.Driver
  7.     url: jdbc:mysql://localhost:3306/tlias
  8.     username: root
  9.     password: root
  10. mybatis:
  11.   configuration:
  12.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  13.     # 开启驼峰命名
  14.     map-underscore-to-camel-case: true
  15. # 分页插件,页码输入负数,查询是有问题的,查不到对应的数据了
  16. # 分页合理化参数,默认值为false。当该参数设置为true时,pageNum<=0时会查询第一页
  17. # pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
  18. pagehelper:
  19.   reasonable: true
  20.   helper-dialect: mysql
复制代码
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之PageHelper分页插件
SpringBoot3+Vue3开发综合实战项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战
demo.zip (41.48 KB, 下载次数: 0, 售价: 50 金币)
localhost.sql (9.79 KB, 下载次数: 0, 售价: 50 金币)
网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2025-12-1 07:01

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表