瑞吉外卖项目

Bertha 。 2023-09-24 21:48 123阅读 0赞

第三天

  1. 新增员工需求分析

    1. 1、页面发送ajax请求,将新增员工页面中输入的数据以json的形式提交到服务端
    2. 2、服务端Controller接收页面提交的数据并调用Service将数据进行保存
    3. 3Service调用Mapper操作数据库,保存数据
  2. 在employeeController类编写新增员工的代码。

    //新增员工
    @PostMapping
    public R save(HttpServletRequest request,@RequestBody Employee employee){

    log.info(“新增员工,员工信息:{}”,employee.toString());
    //设置初始密码123456,需要进行MD5加密处理
    employee.setPassword(DigestUtils.md5DigestAsHex(“123456”.getBytes()));
    employee.setCreateTime(LocalDateTime.now());
    employee.setUpdateTime(LocalDateTime.now());

    //获得当前登录用户id
    Long empId=(Long)request.getSession().getAttribute(“employee”);

    employee.setCreateUser(empId);
    employee.setUpdateUser(empId);
    employeeService.save(employee);

    1. return R.success("新增员工成功!");

    }

  3. 在新增员工中,如果新增相同的员工信息,代码会报错,因此新建一个全局报错类来,捕获错误,在common包下新建一个GlobalExceptionHandler类。

    @ControllerAdvice(annotations = {

    1. RestController.class, Controller.class})

    @ResponseBody
    @Slf4j
    public class GlobalExceptionHandler {

    //异常处理方法

    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R exceptionHandler(SQLIntegrityConstraintViolationException ex){

    log.error(ex.getMessage());

    if (ex.getMessage().contains(“Duplicate entry”)){

    String[] split= ex.getMessage().split(“ “);
    String msg=split[2]+”已存在”;

    1. return R.error(msg);

    }

    1. return R.error("未知错误!");

    }
    }

  4. 系统中的员工很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据,操作步骤如下:

1、页面发送ajax请求,将分页查询参数(page.pageSize、name)提交到服务端
2、服务端Controller接收页面提交的数据并调用Service查询数据
3、Service调用Mapper操作数据库,查询分页数据
4、Controller将查询到的分页数据响应给页面
5、页面接收到分页数据并通过ElementuI的Table组件展示到页面上

  1. 在config包下新建MybatisPlusConfig类,配置mybatisplus的分页插件。

    //配置mybatisplus的分页插件
    @Configuration
    public class MybatisPlusConfig {

    @Bean

    1. public MybatisPlusInterceptor mybatisPlusInterceptor(){

    MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();
    mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());

    1. return mybatisPlusInterceptor;
    2. }

    }

  2. 在EmployeeController编写分页查询代码

    //员工信息分页查询

    1. @GetMapping("/page")

    public R page(int page,int pageSize,String name){

    log.info(“page={},pageSize={},name={}”,page,pageSize,name);
    //构造分页构造器

    1. Page pageinfo=new Page(page,pageSize);
    2. //构造条件构造器

    LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper();
    //添加过滤条件

    1. queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);

    //添加排序条件

    1. queryWrapper.orderByDesc(Employee::getUpdateTime);
    2. //执行查询

    employeeService.page(pageinfo,queryWrapper);

    1. return R.success(pageinfo);

    }

  3. 员工的启用和禁用
    在执行修改代码时,根据id查找修改员工信息时,用long类型时,由于long类型精确到16位会产生id的偏差。
    具体实现步骤:
    1)提供对象转换器JacksonObjectMapper,基于Jackson进行Java对象到json数据的转换(资料中已经提供,直接复制到项目中使用)
    2)在WebMvcConfig配置类中扩展Spring mvc的消息转换器,在此消息转换器中使用提供的对象转换器进行lava对象到json数据的转换。

  4. 在common包下导入jacksonObjectMapper类
    在这里插入图片描述
  5. 在WebMvcConfig编写对象转换器代码

    //扩展mvc框架的消息转换器

    1. @Override
    2. protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
    3. //创建消息转换器对象
    4. MappingJackson2HttpMessageConverter messageConverter=new MappingJackson2HttpMessageConverter();
    5. //设置对象转换器,底层使用jackson将java对象转换json
    6. messageConverter.setObjectMapper(new JacksonObjectMapper());
    7. //将上面的消息转换器对象追加到mvc框架转换器集合中
    8. converters.add(0,messageConverter);
    9. super.extendMessageConverters(converters);
    10. }
  6. 在EmployeeController下编写修改员工信息代码

    //根据id修改员工信息
    @PutMapping
    public R update(HttpServletRequest request, @RequestBody Employee employee){

  1. long empId=(long)request.getSession().getAttribute("employee");
  2. employee.setUpdateTime(LocalDateTime.now());
  3. employee.setUpdateUser(empId);
  4. employeeService.updateById(employee);
  5. return R.success("员工信息修改成功!");
  6. }

11.编辑员工信息
1、点击编辑按钮时,页面跳转到add.html,并在url中携带参数[员工id]
2、在add.html页面获取url中的参数[员工id]
3、发送ajax请求,请求服务端,同时提交员工id参数
4、服务端接收请求,根据员工id查询员工信息,将员工信息以json形式响应给页面5、页面接收服务端响应的json数据,通过VUE的数据绑定进行员工信息回显
6、点击保存按钮,发送ajax请求,将页面中的员工信息以json方式提交给服务端7、服务端接收员工信息,并进行处理,完成后给页面响应
8、页面接收到服务端响应信息后进行相应处理

  1. 在EmployeeController下编写修改员工信息代码(编写根据id查询员工信息,调用update方法)

    //根据id修改员工信息
    @PutMapping
    public R update(HttpServletRequest request, @RequestBody Employee employee){

  1. long empId=(long)request.getSession().getAttribute("employee");
  2. employee.setUpdateTime(LocalDateTime.now());
  3. employee.setUpdateUser(empId);
  4. employeeService.updateById(employee);
  5. return R.success("员工信息修改成功!");
  6. }

美好的一天,到此结束,下次继续努力!

发表评论

表情:
评论列表 (有 0 条评论,123人围观)

还没有评论,来说两句吧...

相关阅读

    相关 项目

    黑马-瑞吉外卖项目完成时间`2023-3-2` 。 1. 学习外卖平台后台管理和用户端的主要业务开发流程,springboot + mybatis plus开发核心 等技术

    相关 项目

    第三天 1. 新增员工需求分析 1、页面发送ajax请求,将新增员工页面中输入的数据以json的形式提交到服务端 2、服务端C

    相关 学习项目

    以当前热门的外卖点餐为业务基础,业务真实、实用、广泛。基于流行的Spring Boot、mybatis plus等技术框架进行开发。 第一天: 1. 设计产品原型