使用lombok生成mapstruct状态检查器方法

wtlkbnrh  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(372)

mapstruct知道源状态检查,并在默认情况下使用状态检查器方法(当然,如果存在)来验证是否应该用源对象中的值更新目标对象中的字段。默认情况下,如果没有状态检查器,mapstruct只更新具有非空值的字段。
我想在rest控制器中使用dto来实现部分更新策略,使用mapstruct的source presence checknig,但是由于我使用lombok来生成getter和setter,所以我还想生成source presence checking方法。

eivgtgni

eivgtgni1#

这是没有办法的。来源:我。我是Lombok山的核心贡献者。
然而,最近有一个关于特性请求的讨论非常长:issue#2669:generate has()方法。它有多个错误的方向,所以我建议你从结尾开始,这里列出了一些从这里到那里的具体计划。这很复杂。

7vux5j2d

7vux5j2d2#

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

// 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;
    }
}

更详细的答案可以在这里找到

相关问题