IT评测·应用市场-qidao123.com

标题: 【无标题】 [打印本页]

作者: 金歌    时间: 2025-2-19 02:21
标题: 【无标题】
Day17

Tlias智能学习体系

员工管理:

条件分页查询:
三层架构中,每一层的职责如下:
1.Controller:接收参数(分页、条件);调用service,进行分页查询,获取PageResult;相应效果。
具体实现:
  1. /**
  2.     * 分页查询
  3.     */
  4.    @GetMapping
  5.    public Result page (@RequestParam(defaultValue = "1") Integer page,
  6.                        @RequestParam(defaultValue = "10") Integer pageSize,
  7.                        String name, Integer gender,
  8.                        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
  9.                        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
  10.        log.info("分页查询:{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);
  11.        PageResult<Emp> pageResult = empService.page(page,pageSize,name,gender,begin,end);
  12.        return Result.success(pageResult);
  13.    }
复制代码
2.Service:利用PageHelper完成分页条件查询;封装PageResult对象,返回。
具体实现:(根本不动)
  1. public PageResult<Emp> page(Integer page, Integer pageSize, String name, Integer gender, LocalDate begin,LocalDate end) {
  2.        //1.设置分页参数(PageHelper)
  3.        PageHelper.startPage(page,pageSize);
  4.        //2.执行查询
  5.        List<Emp> empList = empMapper.list(name,gender,begin,end);
  6.        //3.解析查询结果,并封装
  7.        Page<Emp> p = (Page<Emp>) empList;
  8.        return new PageResult<Emp>(p.getTotal(),p.getResult());
  9.    }
复制代码
3.Mapper:SQL:
  1. select e.*,d.name deptName from emp e left join dept d on e.dept_id = d.id
  2.                           where e.name like '%阮%' and e.gender = 1 and e.entry_date between '2010-0101' and '2020-01-01'
  3.                           order by e.update_time desc;
复制代码
具体实现:
  1. @Mapper
  2. public interface EmpMapper {
  3. public List<Emp> list(String name, Integer gender, LocalDate begin, LocalDate end);
  4. }
复制代码
由于查询语句复杂所以用配置文件:
  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.itheima.mapper.EmpMapper">
  6.    <select id="list" resultType="com.itheima.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.        order by e.update_time desc
  12.    </select>
  13. </mapper>
复制代码
请求参数接收优化方案:
假如controller方法的参数较多,且未来大概继续增加,这会使得方法签名变得复杂难以维护,此时可以思量将多个请求参数封装为一个对象。
  1. package com.itheima.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. }
复制代码
动态SQL:
随着用户的输入或外部条件的变化而变化的SQL语句,我们成为动态SQL。
<if>:判定条件是否成立,假如条件为true,则拼接SQL。
<where>:根据查询条件,来天生where关键字,并会自动去除条件前面多余的and或or。
  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.itheima.mapper.EmpMapper">
  6.    <select id="list" resultType="com.itheima.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.        order by e.update_time desc
  19.    </select>
  20. </mapper>
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4