java 在MapStruct Spring Core中有效地删除审计字段的重复@Mapping注解

xqkwcwgp  于 2023-06-02  发布在  Java
关注(0)|答案(1)|浏览(239)

有很多方法可以删除相同的忽略Map,而不需要在不同的方法上重复@Mapping注解,例如在一个简短的注解或接口中的审计字段,如IgnoreMappingAuditionFields或其他方式?那么你能推荐什么方法来解决这个问题呢?

  1. @Mapper(config = MapperConfiguration.class)
  2. public interface CategoryMapper {
  3. CategoryDto toDto(final Category category);
  4. @Mapping(target = "createdAt", ignore = true)
  5. @Mapping(target = "updatedAt", ignore = true)
  6. @Mapping(target = "createdBy", ignore = true)
  7. @Mapping(target = "modifiedBy", ignore = true)
  8. @Mapping(target = "id", ignore = true)
  9. @Mapping(target = "quizzes", ignore = true)
  10. @Mapping(target = "parentCategory.createdAt", ignore = true)
  11. @Mapping(target = "parentCategory.updatedAt", ignore = true)
  12. @Mapping(target = "parentCategory.createdBy", ignore = true)
  13. @Mapping(target = "parentCategory.modifiedBy", ignore = true)
  14. @Mapping(target = "parentCategory.id", ignore = true)
  15. @Mapping(target = "parentCategory.quizzes", ignore = true)
  16. Category toCategory(final CategoryDto categoryDto);
  17. @Mapping(target = "createdAt", ignore = true)
  18. @Mapping(target = "updatedAt", ignore = true)
  19. @Mapping(target = "createdBy", ignore = true)
  20. @Mapping(target = "modifiedBy", ignore = true)
  21. @Mapping(target = "id", ignore = true)
  22. @Mapping(target = "quizzes", ignore = true)
  23. @Mapping(target = "parentCategory.createdAt", ignore = true)
  24. @Mapping(target = "parentCategory.updatedAt", ignore = true)
  25. @Mapping(target = "parentCategory.createdBy", ignore = true)
  26. @Mapping(target = "parentCategory.modifiedBy", ignore = true)
  27. @Mapping(target = "parentCategory.id", ignore = true)
  28. @Mapping(target = "parentCategory.quizzes", ignore = true)
  29. @Mapping(target = "parentCategory", ignore = true)
  30. @Mapping(target = "childCategories", ignore = true)
  31. Category toDomain(final CategoryCreationRequest categoryCreationRequest);
  32. }

删除重复字段

ui7jx7zq

ui7jx7zq1#

一种解决方案是将多个Map注解组合到一个自定义注解中。例如,您可以创建一个注解来忽略审计Map:

  1. @Target({ElementType.METHOD})
  2. @Retention(RUNTIME)
  3. @Mapping(target = "createdAt", ignore = true)
  4. @Mapping(target = "updatedAt", ignore = true)
  5. @Mapping(target = "createdBy", ignore = true)
  6. @Mapping(target = "modifiedBy", ignore = true)
  7. public @interface IgnoreAuditMapping {}

注解可以在Map器中使用以减少重复:

  1. @Mapper(config = MapperConfiguration.class)
  2. public interface CategoryMapper {
  3. ...
  4. @IgnoreAuditMapping
  5. @Mapping(target = "id", ignore = true)
  6. @Mapping(target = "quizzes", ignore = true)
  7. @Mapping(target = "parentCategory.createdAt", ignore = true)
  8. @Mapping(target = "parentCategory.updatedAt", ignore = true)
  9. @Mapping(target = "parentCategory.createdBy", ignore = true)
  10. @Mapping(target = "parentCategory.modifiedBy", ignore = true)
  11. @Mapping(target = "parentCategory.id", ignore = true)
  12. @Mapping(target = "parentCategory.quizzes", ignore = true)
  13. Category toCategory(final CategoryDto categoryDto);
  14. ...
  15. }
展开查看全部

相关问题