尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

苍穹外卖第一章的学习总结-2026-8.31

苍穹外卖第一章的学习总结-2026-8.31 第一章主要完成了员工的相关接口开发有以下这些接口1、新增员工controller层PostMapping() ApiOperation(新增员工) public Result save(RequestBody EmployeeDTO employeeDTO) { log.info(新增员工:{},employeeDTO); // 调用 Service 层的方法来处理新增员工的逻辑 employeeService.save(employeeDTO); return Result.success(); }service层public void save(EmployeeDTO employeeDTO) { Employee employee new Employee(); // 拷贝 DTO 的具体数据放到实体类当中去 BeanUtils.copyProperties(employeeDTO, employee); //设置账号的状态默认正常状态 1表示正常 0 表示封禁 employee.setStatus(StatusConstant.ENABLE); // 设置默认密码 md5密码加密 employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes())); // 设置创建时间 employee.setCreateTime(LocalDateTime.now()); // 设置最后操作时间 employee.setUpdateTime(LocalDateTime.now()); // 设置创建者 ID 设置更新者 ID // 后期需要改为当前用户的ID已修改完成 employee.setCreateUser(BaseContext.getCurrentId()); employee.setUpdateUser(BaseContext.getCurrentId()); // 调用mapper层来执行新增员工的操作 employeeMapper.insert(employee); }mapper层Insert(INSERT INTO employee (name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user) VALUES (#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser})) void insert(Employee employee);新增员工这里的话呢因为是第一次的角色前端传上来的东西都是可以直接插入的也就是说只需要执行一行简单的insert语句注意的就是数据库字段命名和java代码中的字段命名数据库比较喜欢用id_number,然后代码开发一般用的是驼峰命名idNumber插入的时候要注意2、编辑员工controller层PutMapping ApiOperation(编辑员工) public Result update(RequestBody EmployeeDTO employeeDTO){ log.info(编辑员工的信息{},employeeDTO); // 调用 Service 层来处理 编辑员工 逻辑 employeeService.update(employeeDTO); return Result.success(); }service层public void update(EmployeeDTO employeeDTO) { // 新建一个员工类 Employee employee new Employee(); // 把传上来的员工信息 放进 新的员工类里面 BeanUtils.copyProperties(employeeDTO,employee); // 设置更新的时间 employee.setUpdateTime(LocalDateTime.now()); // 设置更新者的id employee.setUpdateUser(BaseContext.getCurrentId()); // 调用 mapper 层来编辑数据库 employeeMapper.update(employee); }mapper层!-- 员工账号信息修改 -- update idupdate update employee set if testname ! nullname #{name},/if if testusername ! nullusername #{username},/if if testpassword ! nullpassword #{password},/if if testphone ! nullphone #{phone},/if if testsex ! null sex #{sex},/if if testidNumber ! null id_number #{idNumber},/if if testupdateTime ! null update_time #{updateTime},/if if testupdateUser ! null update_user #{updateUser},/if if teststatus ! null status #{status}/if /set where id #{id} /update编辑员工这里和新增员工不一样编辑是对已有的员工来做修改所以本质是update;这里的话也是要注意数据库命名和java代码的大小写3、员工分页查询controller层GetMapping(/page) ApiOperation(员工分页查询) public ResultPageResult page(EmployeePageQueryDTO employeePageQueryDTO){ log.info(分页Controller); PageResult pageResult employeeService.pageQuery(employeePageQueryDTO); return Result.success(pageResult); }service层public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) { // select * from employee limit 0,10 // 开始分页查询 PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize()); // 调用 mapper 层来做分页查询 PageEmployee page employeeMapper.pageQuery(employeePageQueryDTO); // 获取分页查询的总数 long total page.getTotal(); // 获取分页的数据集合 ListEmployee records page.getResult(); // 返回分页结果 return new PageResult(total, records); }mapper层!-- 员工分页查询 -- select idpageQuery resultTypecom.sky.entity.Employee select * from employee where if testname ! null and name ! name like concat(%,#{name},%) /if /where order by create_time desc /select分页查询这里最主要的就是用了PageHelper来做了两件事给 SQL 自动加分页条件LIMIT自动查询符合条件的总记录数COUNT(*)这样你就不需要在mapper的SQL语句这里加上limit了4、启用、禁用员工账号controller层PostMapping(/status/{status}) ApiOperation(启用、禁用员工账号) public Result starrOrStop(PathVariable Integer status, Long id){ log.info(启用、禁用员工账号{}{},status,id); // 调用service层来逻辑处理 employeeService.startOrStop(status,id); return Result.success(); }service层public void startOrStop(Integer status, Long id) { // update employee set status ? where id ? // 设置员工账号状态 Employee employee new Employee(); employee.setStatus(status); employee.setId(id); // 同步更新操作时间和操作人 employee.setUpdateTime(LocalDateTime.now()); employee.setUpdateUser(BaseContext.getCurrentId()); // 调用mapper层来执行数据库操作 employeeMapper.update(employee); }mapper层update idupdate update employee set if testname ! nullname #{name},/if if testusername ! nullusername #{username},/if if testpassword ! nullpassword #{password},/if if testphone ! nullphone #{phone},/if if testsex ! null sex #{sex},/if if testidNumber ! null id_number #{idNumber},/if if testupdateTime ! null update_time #{updateTime},/if if testupdateUser ! null update_user #{updateUser},/if if teststatus ! null status #{status}/if /set where id #{id} /update这个功能的本质是通过查询员工id来定位员工然后把员工的状态改为启用或者禁用本质也是修改update所以和前面的编辑员工更新员工信息是一样的可以共用这一段SQL语句5、根据员工id查询员工controller层GetMapping(/{id}) ApiOperation(根据员工id查询员工) public ResultEmployee getById(PathVariable long id){ // 调用service层来逻辑处理 Employee employee employeeService.getById(id); // 填充结果集 return Result.success(employee); }service层public Employee getById(long id) { // 根据id查询员工 Employee employee employeeMapper.getById(id); // 设置密码为****防止泄漏 employee.setPassword(****); return employee; }mapper层Select(select * from employee where id #{id}) Employee getById(Long id);这个根据id查询运功信息并返回这个没什么讲的了拿到路径id后执行SQL语句查询这个id的员工信息。总结新增员工时主要是将前端传递的 DTO 转换为 Entity并在 Service 层补充密码、状态、创建时间、更新时间、创建人和更新人等系统字段然后通过 Mapper 执行 INSERT 操作。编辑员工和启用/禁用员工本质上都属于 UPDATE 操作因此可以通过动态 SQL 实现局部字段更新。通过if判断字段是否为空可以避免修改没有发生变化的字段。同时涉及数据修改时需要同步记录updateTime和updateUser。分页查询使用了 PageHelper。PageHelper 可以自动帮助 MyBatis 完成分页处理包括自动添加LIMIT以及查询符合条件的总记录数因此 Service 层可以直接通过page.getTotal()获取总数量通过page.getResult()获取当前页数据。
返回列表