服装行业网站建设比较好,网站开发的基本原则,it培训机构学费一般多少,张家港网站建设门店3. 修改员工
需求#xff1a;修改员工信息 在进行修改员工信息的时候#xff0c;我们首先先要根据员工的ID查询员工的信息用于页面回显展示#xff0c;然后用户修改员工数据之后#xff0c;点击保存按钮#xff0c;就可以将修改的数据提交到服务端#xff0c;保存到数据…3. 修改员工
需求修改员工信息 在进行修改员工信息的时候我们首先先要根据员工的ID查询员工的信息用于页面回显展示然后用户修改员工数据之后点击保存按钮就可以将修改的数据提交到服务端保存到数据库。 具体操作为 根据记录的ID进行查询用于页面回显展示员工信息{查询回显} 保存修改的员工信息提交到服务端保存到数据库{更新数据库表当中的数据}
3.1 查询回显
3.1.1 接口文档
基本信息 请求参数
参数格式路径参数
参数说明
参数名类型是否必须备注idnumber必须员工ID
请求参数样例 响应数据
参数格式application/json
参数说明 名称类型是否必须默认值备注codenumber必须响应码, 1 成功 , 0 失败msgstring非必须提示信息dataobject必须返回的数据|- idnumber非必须id|- usernamestring非必须用户名|- namestring非必须姓名|- passwordstring非必须密码|- entrydatestring非必须入职日期|- gendernumber非必须性别 , 1 男 ; 2 女|- imagestring非必须图像|- jobnumber非必须职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师|- deptIdnumber非必须部门id|- createTimestring非必须创建时间|- updateTimestring非必须更新时间
响应数据样例 3.1.2 实现思路 通过PathVariable注解接收请求路径中的路径参数 3.1.3 代码实现
EmpController
package com.gch.controller;import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;
import com.gch.pojo.Result;
import com.gch.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import java.time.LocalDate;
import java.util.List;/**员工管理控制器*/
Slf4j
RestController
RequestMapping(/emps)
public class EmpController {Autowiredprivate EmpService empService;/*** 条件分页查询* param page 分页查询的页码* param pageSize 分页查询的每页展示记录数* param name 姓名* param gender 性别* param begin 入职日期的开始时间* param end 入职日期的结束时间* 默认值的设置可以通过注解RequestParam中的defaultValue()属性来指定默认值* 用DateTimeFormat注解中的pattern属性指定日期时间类型的格式* 注意:方法签名上的形参变量名需要于接口文档中的请求参数名保持一致* return*/GetMappingpublic Result page(RequestParam(defaultValue 1) Integer page,RequestParam(defaultValue 10) Integer pageSize,String name, Short gender,DateTimeFormat(pattern yyyy-MM-dd) LocalDate begin,DateTimeFormat(pattern yyyy-MM-dd) LocalDate end) {
// 设置默认值,但写法比较繁琐
// if(page null) {page 1;}
// if(pageSize null) {pageSize 10;}// 记录日志log.info(条件分页查询,参数:page:{},pageSize:{},name:{},gender:{},begin:{},end:{},page,pageSize,name,gender,begin,end);// 调用service分页查询PageBean pageBean empService.page(page,pageSize,name,gender,begin,end);// 响应return Result.success(pageBean);}/*** 批量删除员工信息* param ids 接收前端传递过来的路径参数id数组* return*/DeleteMapping(/{ids})public Result delete(PathVariable ListInteger ids) {// 记录日志log.info(批量删除员工,ids:{},ids);// 调用service批量删除empService.delete(ids);// 响应return Result.success();}/*** 新增员工* param emp 员工对象* 在Controller中使用RequestBody注解接收前端传递的JSON格式的数据并填充到实体类中* return 返回统一响应结果*/PostMappingpublic Result save(RequestBody Emp emp) {// 记录日志log.info(新增员工 , emp:{},emp);// 调用service添加员工empService.save(emp);// 响应return Result.success();}/*** 根据主键ID进行员工信息查询* param id 主键ID* return 响应统一结果* 在Controller中通过PathVariable注解接收请求路径中的路径参数*/GetMapping(/{id})public Result getById(PathVariable Integer id) {// 1.记录日志log.info(根据id查询员工信息,id:{},id);// 2.调用service查询Emp emp empService.selectById(id);// 3.响应return Result.success(emp);}
}EmpService
package com.gch.service;import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;import java.time.LocalDate;
import java.util.List;/**员工业务规则*/
public interface EmpService {/*** 条件分页查询* param page 分页查询的页码* param pageSize 分页查询的每页展示记录数* param name 姓名* param gender 性别* param begin 入职日期的开始时间* param end 入职日期的结束时间* return*/PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);/*** 批量删除员工信息操作* param ids 前端传递过来的路径参数id集合*/void delete(ListInteger ids);/*** 添加员工* param emp 员工对象*/void save(Emp emp);/*** 根据主键ID查询员工* param id 主键ID* return 返回员工对象*/Emp selectById(Integer id);
}EmpServiceImpl
package com.gch.service.impl;import com.gch.mapper.EmpMapper;
import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;
import com.gch.service.EmpService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;/**员工业务实现类*/
Slf4j
Service
public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;/*** 原始分页查询* param page 分页查询的页码* param pageSize 分页查询的每页展示记录数* return*/
// Override
// public PageBean page(Integer page, Integer pageSize) {
// // 1.获取总记录数
// Long total empMapper.count();
//
// // 2.获取分页查询的数据列表
// ListEmp rows empMapper.pageSelect((page - 1) * pageSize,pageSize);
//
// // 3.封装PageBean对象
// return new PageBean(total,rows);
// }/*** 基于PageHelper分页插件实现分页查询* param page 分页查询的页码* param pageSize 分页查询的每页展示记录数* param name 姓名* param gender 性别* param begin 入职日期的开始时间* param end 入职日期的结束时间* return*/Overridepublic PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end){// 1.设置分页参数PageHelper.startPage(page,pageSize);// 2.执行条件分页查询ListEmp empList empMapper.list(name,gender,begin,end);// 获取条件分页查询结果PageEmp p (PageEmp)empList;// 3.封装PageBean对象并返回return new PageBean(p.getTotal(),p.getResult());}/*** 批量删除员工信息* param ids 前端传递过来的路径参数id集合*/Overridepublic void delete(ListInteger ids) {empMapper.deleteById(ids);}/*** 添加员工* param emp 员工对象*/Overridepublic void save(Emp emp) {// 1.补全员工数据 / 属性emp.setCreateTime(LocalDateTime.now());emp.setUpdateTime(LocalDateTime.now());// 2.调用mapper层新增员工方法empMapper.add(emp);}/*** 根据主键ID进行员工查询* param id 主键ID* return 返回员工对象*/Overridepublic Emp selectById(Integer id) {return empMapper.selectById(id);}
}package com.gch.mapper;import com.gch.pojo.Emp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.time.LocalDate;
import java.util.List;/**员工管理*/
Mapper
public interface EmpMapper {/*** 查询总记录数* return*/
// Select(select count(*) from tlias.emp)
// public Long count();/*** 分页查询,获取数据列表/获取列表数据* param startIndex 起始索引* param pageSize 每页展示记录数* return*/
// Select(select * from tlias.emp limit #{startIndex},#{pageSize})
// public ListEmp pageSelect(Integer startIndex,Integer pageSize);/*** 基于PageHelper进行员工信息条件分页查询* 查询条件参数:* param name 姓名* param gender 性别* param begin 入职日期的开始时间* param end 入职日期的结束时间* return*/public ListEmp list(String name, Short gender, LocalDate begin, LocalDate end);/*** 批量删除员工信息* param ids 前端传递过来的路径参数id集合*/void deleteById(ListInteger ids);/*** 新增/插入员工* param emp 员工对象*/Insert(insert into tlias.emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values(#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime}))void add(Emp emp);/*** 根据主键ID进行员工信息查询* param id 主键ID* return 返回员工对象*/Select(select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from tlias.emp where id #{id})Emp selectById(Integer id);
}
3.1.4 启动项目Postman测试 3.1.5 前后端联调 - 查询回显 3.2 修改员工 当数据查询回显之后就可以在表单当中展示出原来的数据接下来就可以在原来数据的基础上来修改员工的基本信息。
当用户修改完数据之后点击保存按钮就需要将数据提交到服务端然后服务端需要将修改后的数据更新到数据库中。
3.2.1 接口文档 基本信息 请求参数
参数格式application/json
参数说明
名称类型是否必须备注idnumber必须idusernamestring必须用户名namestring必须姓名gendernumber必须性别, 说明: 1 男, 2 女imagestring非必须图像deptIdnumber非必须部门identrydatestring非必须入职日期jobnumber非必须职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师
请求数据样例 思考更新员工数据的时候是根据主键ID来进行更新的因为更新的时候除了主键ID不能变其它都有可能发生变化。 响应数据
参数格式application/json
参数说明
响应数据样例 3.2.2 实现思路
SQL语句
-- update语法:update 表名 set 字段名1 值1, 字段名2 值2,...[where 条件];
-- 更新员工
update emp
set username ,password ,name ,,gender ?,image ,job ?,entrydate ?,dept_id ?,update_time ?
where id ?;
3.2.3 代码实现
EmpController
package com.gch.controller;import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;
import com.gch.pojo.Result;
import com.gch.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import java.time.LocalDate;
import java.util.List;/**员工管理控制器*/
Slf4j
RestController
RequestMapping(/emps)
public class EmpController {Autowiredprivate EmpService empService;/*** 修改员工* param emp 员工对象* return 响应* 在Controller中通过RequestBody注解接收前端传递过来的JSON格式的数据并填充到实体类中*/PutMappingpublic Result updateById(RequestBody Emp emp) {// 1.记录日志log.info(修改员工,emp:{},emp);// 2.调用service修改员工empService.update(emp);// 3.响应return Result.success();}
}EmpService
package com.gch.service;import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;import java.time.LocalDate;
import java.util.List;/**员工业务规则*/
public interface EmpService {/*** 修改员工* param emp*/void update(Emp emp);
}EmpServiceImpl
package com.gch.service.impl;import com.gch.mapper.EmpMapper;
import com.gch.pojo.Emp;
import com.gch.pojo.PageBean;
import com.gch.service.EmpService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;/**员工业务实现类*/
Slf4j
Service
public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;/*** 修改员工* param emp 员工对象*/Overridepublic void update(Emp emp) {// 1.补全员工属性emp.setUpdateTime(LocalDateTime.now());// 2.调用mapper层修改员工empMapper.updateById(emp);}
}EmpMapper
package com.gch.mapper;import com.gch.pojo.Emp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.time.LocalDate;
import java.util.List;/**员工管理*/
Mapper
public interface EmpMapper {/*** 修改员工* param emp 员工对象*/void updateById(Emp emp);
}EmpMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.gch.mapper.EmpMapper!-- 动态更新员工信息 SQL语句中的id需要与mapper接口方法名保持一致--update idupdateByIdupdate empsetif testusername ! null and username ! username #{username},/ifif testpassword ! null and password ! password #{password},/ifif testname ! null and name ! name #{name},/ifif testgender ! nullgender #{gender},/ifif testimage ! null and image ! image #{image},/ifif testjob ! nulljob #{job},/ifif testentrydate ! nullentrydate #{entrydate},/ifif testdeptId ! nulldept_id #{deptId},/ifif testupdateTime ! nullupdate_time #{updateTime}/if/setwhere id #{id}/update
/mapper注意动态更新员工信息 SQL语句中的id需要与mapper接口方法名保持一致
3.2.4 Postman测试 3.2.5 前后端联调测试 掌握基于页面原型和接口文档来开发功能接口的能力。