P16 新增员工_需求分析和设计
1.新增员工
前端调教提交过来的数据
注意:当前端提交的数据和实体类中对应的属性差别比较大时,建议使用DTO来封装数据
当属性名一致时,就可以使用对象的属性拷贝
对象属性拷贝 BeanUtils.copyProperties(源目标,目标).
/-------------------------------------------------------------------------------------------/
存在问题:录入的用户名已存在,抛出异常后没有处理
·······重点······新增员工时,创建人id和修改人id设置为固定值了
1.处理已存在用户名异常
@ExceptionHandler
public Result exceptionHandler(SQLIntegrityConstrainViolationException ex){ //这是用户名存在时所抛出的异常
//Duplicate entry ‘zhangsan’ for key ‘employee.idx_username’ 异常信息
String message = ex.getMessgae(); //接收异常的全部信息
if(message.contains(“Duplicate entry”)){
String[] split = message.split(" ");
String username = split[2]; //获取已经存在的用户名
String msg = username + MessageConstant.ALREADY_EXISTS;
return Result.error(msg); //向前端返回错误提示信息
}else{
return Result.error(MessageConstant.UNKOWN_ERROR);
}
}
}
2.获取当前创建人的id
解析出登陆员工id后,如何传递给Service的save方法??(重要技术点)
ThreadLocal 并不是一个Thread,而是Thread的局部变量。
ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
客户端发送的每一次请求都是一个单独的线程。例如第一次请求添加员工时线程45,第二次再次添加员工线程就是其他数字。
解决方法:在拦截器中解析出当前用户的id后,将id存储到ThreadLocal中。
在需要该id时使用ThreadLocal.get()方法获取id
P21 员工分页查询
total来源于分页查询 PageHelper插件
问题1:如何对日期格式进行转换处理???
方式1:在属性上加入注解,对日期进行格式化(只能处理单个的一个属性–即加入了注解的属性,其他如需处理得一个一个在加上注解)
方式2:在WebMvcConfiguration中扩展Spring MVC的消息转换器,同一对日期类型进行格式化处理。(建议使用)(听完了还是有点懵)
/-------------------------------------------------------------------------------------------------/
启用禁用员工账号
@PathVariable 如果传入的是路径参数,写接口时参数前面需要添加的
在HTTP请求中,路径参数和查询参数是两种不同的传递方式.
- 路径参数(Path Parameters):
- 传递方式:路径参数是通过URL的路径部分来传递的,通常以
/
分隔路径段,并使用占位符来表示参数的值。 - 示例:
http://example.com/users/{userId}
- 在上面的示例中,
{userId}
是路径参数的占位符,实际的参数值将替换占位符部分。 - 使用场景:路径参数常用于标识资源或指定资源的唯一标识符,例如获取用户信息、获取特定文章等。
- 传递方式:路径参数是通过URL的路径部分来传递的,通常以
- 查询参数(Query Parameters):
- 传递方式:查询参数是通过URL的查询字符串部分来传递的,以
?
开头,多个参数之间用&
分隔。 - 示例:
http://example.com/users?name=John&age=25
- 在上面的示例中,
name
和age
是查询参数的名称,John
和25
是对应参数的值。 - 使用场景:查询参数常用于传递筛选、排序、分页等额外的请求参数,例如搜索用户、排序商品列表等。
总结:
- 传递方式:查询参数是通过URL的查询字符串部分来传递的,以
- 路径参数用于标识资源或指定唯一标识符,通过URL的路径部分传递。
- 查询参数用于传递额外的请求参数,通过URL的查询字符串部分传递。
/-----------------------------------------/
编辑员工(本质上对员工信息进行update操作,与上述启用禁用员工状态类似)
编辑员工功能涉及到两个接口:
根据id查询员工信息,返回给前端
编辑员工信息
导入分类模块功能代码