苍穹外卖学习笔记day01

  1. 项目结构
  2. nginx反向代理
  3. 将前端的动态请求转发给后端服务器。
  4. 前后端之间的一个管理服务器,通过管理请求转发可以实现:提高访问速度;进行负载均衡;保证后端服务安全。
  5. 登录密码的安全问题->MD5加密方式【DigestUtils.md5DigestAsHex(password.getBytes())】
  6. 新增员工
  7. 管理端接口:/admin/employee
  8. 整体逻辑:
  9. EmployeeController:获取前端请求->调用Service层方法->返回Result对象
  10. 使用DTO对象接收:前端提交数据与实体类属性相差较大。
  11. @RequestBody注解:由于前端提交的是JSON数据(通常是POST/PUT请求),所以使用注解将JSON转为DTO对象。【@RequestParam:GET请求通常使用该注解接收URL查询参数】
  12. 返回Result:新增操作不需要传递参数。
  13. EmployeeService:传递DTO对象,调用实现类employeeServiceImpl
  14. EmployeeServiceImpl:拷贝DTO对象属性+设置其余属性=完整的Employee对象->传递Employee对象,调用Mapper层方法
  15. BeanUtils.copyProperties() :Spring框架下复制属性值的方法,属性名相同、同名属性类型兼容才可使用。
  16. status和password采用常量进行配置:避免硬编码,易于修改;统一管理;提高可读性。
  17. 动态获取员工id:
  18. 员工id何时产生的?登录成功,生成JWT令牌返回前端时。
  19. claims.put(JwtClaimsConstant.EMP_ID,employee.getId()):利用map为常量EMP_ID与id值建立联系。
  20. Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString()) && BaseContext.setCurrentId(empId);:后续获取令牌,通过常量EMP_ID得到id值,再将新建的empId存入ThreadLocal对象。
  21. ThreadLocal对象创建于BaseContext类中,类中还具有set/get/removeCurrentId()方法。

  1. EmployeeMapper:@Insert注解;使用 #{对象属性} 传参
  2. 唯一性约束问题:全局异常处理器里创建对应处理方法->收到SQLIntegrityConstraintViolationException类型的异常->检验异常消息中是否含有"Duplicate entry(重复条目)"->【Duplicate entry 'admin' for key 'employee.idx_username'】使用split分割报错信息,获取“员工name”->Result.error(想要传回的信息)
全部评论

相关推荐

11-20 10:36
南昌大学 Java
牛客99209674...:怎么可能,今年互联网比去年行情好很多,jd和美团大战,一下子多招多少人呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务