【问题标题】:Generate MapStruct presence checker methods with Lombok使用 Lombok 生成 MapStruct 存在检查器方法
【发布时间】:2020-12-27 13:42:07
【问题描述】:

MapStruct 知道source presence checking 并默认使用存在检查器方法(当然如果存在)来验证是否应该使用源中的值更新目标对象中的字段 目的。如果没有存在检查器,MapStruct 默认只更新具有非空值的字段。

我想在 REST 控制器中使用 DTO 来使用 MapStruct 的源存在检查实现部分更新策略,但由于我使用 Lombok 生成 getter 和 setter,我还想生成源存在检查方法。

【问题讨论】:

    标签: java lombok mapstruct


    【解决方案1】:

    没有办法做到这一点。消息来源:我。我是龙目岛的核心贡献者。

    但是,最近有一个关于这个想法的功能请求讨论很长很长:Issue #2669: Generate hasXXX() method。它有多个错误的方向,所以我建议你从头开始,那里列出了一些关于如何从这里到达那里的具体计划。很复杂。

    【讨论】:

    【解决方案2】:

    简而言之,我创建了一个支持@PresenceChecker 注释并生成hasXXX() 方法的lombok 扩展。

    // Original code
    @PresenceChecker
    @Getter
    @Setter
    public class UserUpdateDto {
        private String name;
    }
    
    //Generated code
    public class UserUpdateDto {
        private boolean hasName;
        private String name;
    
        public String getName() {
            return this.name;
        }
    
        public void setName(String name) {
            this.name = name;
            this.hasName = true;
        }
    
        public boolean hasName() {
            return this.hasName;
        }
    }
    

    更详细的答案可以找到here

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 2017-07-16
      • 2023-03-30
      • 2020-10-04
      • 2020-03-14
      • 2020-02-08
      • 2020-02-07
      • 1970-01-01
      • 2021-05-21
      相关资源
      最近更新 更多