当前端提交的数据和实体类中对应的属性差别比较大时,建议使用DTO来封装数据。
VO是为前端展示的数据。
操作步骤:
- 自定义DTO类和实体类
- 方法传参为前端封装的DTO数据,方法内新建实体类对象,通过属性拷贝为实体类对象的属性赋值
代码提示:
使用Spring提供的工具类BeanUtils,调用copyProperties()方法为实体类对象进行属性的赋值
/**
* 新增员工
*
* @param employeeDTO
*/
public void save(EmployeeDTO employeeDTO) {
Employee employee = new Employee();
//将DTO中的属性copy到emp中
BeanUtils.copyProperties(employeeDTO, employee);
//设置状态status
employee.setStatus(StatusConstant.ENABLE);
//设置密码,默认123456。!!需要加密!!
employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
//设置创建时间和修改时间
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
//设置创建人id和修改人id
//从当前线程的存储空间中取出存入的id
employee.setCreateUser(BaseContext.getCurrentId());
employee.setUpdateUser(BaseContext.getCurrentId());
//调用mapper层,插入数据
employeeMapper.insert(employee);
}