各个层的模型

  • 数据库用 DO
  • 数据传输用 DTO,一般分布式向外提供的接口用这玩意,并且不要带逻辑
    • 不然升级会被搞死
  • 业务模型,带逻辑用 BO
  • 领域参数用 PARAM / QUERY
  • 展示层,用 VO

数据拷贝

  • 写个工具类,用 gettersetter 来设置
    • 性能高,其他工具类基本是用反射
    • 会导致软引用太多,metaspace 很容易满
    • 插件可以用 GenerateAllSetter或者 GenerateO2O
    • GenerateAllSetter-2.4.zip

image.png

  1. /**
  2. * 使用 GenerateAllSetter
  3. * 在方法名上 alt+enter
  4. * 选择Generate setter getter converter
  5. *
  6. *
  7. * @param personDO
  8. * @return
  9. */
  10. public static PersonDTO convertToPeronDTO(PersonDO personDO) {
  11. // 下面会根据参数和返回值来自动生成代码
  12. PersonDTO personDTO = new PersonDTO();
  13. personDTO.setName(personDO.getName());
  14. personDTO.setAge(personDO.getAge());
  15. // 没有的属性会控制
  16. personDTO.setCost();
  17. return personDTO;
  18. }
  • 为了避免可能的 NullPointException, 建议在前面加上 判空
    • 工具类也可以用 mapstruct