瑞吉外卖项目
第三天
新增员工需求分析
1、页面发送ajax请求,将新增员工页面中输入的数据以json的形式提交到服务端
2、服务端Controller接收页面提交的数据并调用Service将数据进行保存
3、Service调用Mapper操作数据库,保存数据
在employeeController类编写新增员工的代码。
//新增员工
@PostMapping
public Rsave(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);return R.success("新增员工成功!");
}
在新增员工中,如果新增相同的员工信息,代码会报错,因此新建一个全局报错类来,捕获错误,在common包下新建一个GlobalExceptionHandler类。
@ControllerAdvice(annotations = {
RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {//异常处理方法
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public RexceptionHandler(SQLIntegrityConstraintViolationException ex){ log.error(ex.getMessage());
if (ex.getMessage().contains(“Duplicate entry”)){
String[] split= ex.getMessage().split(“ “);
String msg=split[2]+”已存在”;return R.error(msg);
}
return R.error("未知错误!");
}
}系统中的员工很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据,操作步骤如下:
1、页面发送ajax请求,将分页查询参数(page.pageSize、name)提交到服务端
2、服务端Controller接收页面提交的数据并调用Service查询数据
3、Service调用Mapper操作数据库,查询分页数据
4、Controller将查询到的分页数据响应给页面
5、页面接收到分页数据并通过ElementuI的Table组件展示到页面上
在config包下新建MybatisPlusConfig类,配置mybatisplus的分页插件。
//配置mybatisplus的分页插件
@Configuration
public class MybatisPlusConfig {@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;
}
}
在EmployeeController编写分页查询代码
//员工信息分页查询
@GetMapping("/page")
public R
page(int page,int pageSize,String name){ log.info(“page={},pageSize={},name={}”,page,pageSize,name);
//构造分页构造器Page pageinfo=new Page(page,pageSize);
//构造条件构造器
LambdaQueryWrapper
queryWrapper=new LambdaQueryWrapper();
//添加过滤条件queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
//添加排序条件
queryWrapper.orderByDesc(Employee::getUpdateTime);
//执行查询
employeeService.page(pageinfo,queryWrapper);
return R.success(pageinfo);
}
员工的启用和禁用
在执行修改代码时,根据id查找修改员工信息时,用long类型时,由于long类型精确到16位会产生id的偏差。
具体实现步骤:
1)提供对象转换器JacksonObjectMapper,基于Jackson进行Java对象到json数据的转换(资料中已经提供,直接复制到项目中使用)
2)在WebMvcConfig配置类中扩展Spring mvc的消息转换器,在此消息转换器中使用提供的对象转换器进行lava对象到json数据的转换。- 在common包下导入jacksonObjectMapper类
在WebMvcConfig编写对象转换器代码
//扩展mvc框架的消息转换器
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
//创建消息转换器对象
MappingJackson2HttpMessageConverter messageConverter=new MappingJackson2HttpMessageConverter();
//设置对象转换器,底层使用jackson将java对象转换json
messageConverter.setObjectMapper(new JacksonObjectMapper());
//将上面的消息转换器对象追加到mvc框架转换器集合中
converters.add(0,messageConverter);
super.extendMessageConverters(converters);
}
在EmployeeController下编写修改员工信息代码
//根据id修改员工信息
@PutMapping
public Rupdate(HttpServletRequest request, @RequestBody Employee employee){
long empId=(long)request.getSession().getAttribute("employee");
employee.setUpdateTime(LocalDateTime.now());
employee.setUpdateUser(empId);
employeeService.updateById(employee);
return R.success("员工信息修改成功!");
}
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、页面接收到服务端响应信息后进行相应处理
在EmployeeController下编写修改员工信息代码(编写根据id查询员工信息,调用update方法)
//根据id修改员工信息
@PutMapping
public Rupdate(HttpServletRequest request, @RequestBody Employee employee){
long empId=(long)request.getSession().getAttribute("employee");
employee.setUpdateTime(LocalDateTime.now());
employee.setUpdateUser(empId);
employeeService.updateById(employee);
return R.success("员工信息修改成功!");
}
美好的一天,到此结束,下次继续努力!
还没有评论,来说两句吧...