Java项目实战跟练day4——springboot + mybatis plus开发
一、员工管理部分
新增员工
程序执行流程:
1.页面发送ajax请求,将新增员工页面中输入的数据以json的形式提交到服务端;
2.服务端Controller接收页面提交的数据并调用Service将数据进行保存;
3.Service调用Mapper操作数据库,保存数据。
①前端请求的路径和方式
②EmployeeController.java
/*
新增员工
*/
@PostMapping
public R<String> addEmployee(HttpServletRequest request,@RequestBody Employee employee){
//设置初始密码123456,需要进行md5加密处理
String password = DigestUtils.md5DigestAsHex("123456".getBytes());
employee.setPassword(password);
log.info("新增员工,员工信息为:{}",employee.toString());
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
//获取当前登录用户信息
Long empId = (Long)request.getSession().getAttribute("employee");
employee.setCreateUser(empId);
employee.setUpdateUser(empId);
employeeService.save(employee);//IService中的现成方法
return R.success("新增用户成功");
}
③数据库表结构设计中,指定用户账号(username)为唯一约束,设置用户状态默认值为1(即正常状态)
注意:由于username是唯一约束,当新增员工的账号在数据库中已经存在时,会报错:SQLIntegrityConstraintViolationException
解决方法:建立一个全局异常类GlobalExceptionHandler.java,处理项目所有的异常问题。
@ControllerAdvice(annotations ={RestController.class, Controller.class} )
@ResponseBody
@Slf4j
//拦截加了RestController注解的controller文件
public class GlobalExceptionHandler {
/*
异常处理方法
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
log.info(ex.getMessage());
if(ex.getMessage().contains("Duplicate entry")){
String[] s = ex.getMessage().split(" ");
String msg = s[2]+"已存在";
return R.error(msg);
}
return R.error("未知错误");
}
}
目前项目结构为: