Java - MapStruct:Mapper的自定义属性,如`nullValueCheckStrategy`

时间:2017-12-27 16:04:13

标签: java mapstruct

我可以在Mapper.java接口nullValueCheckStrategy中添加新属性以检查权限吗?

如果我添加nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS 代码生成将为每个字段添加if(filed != null)

我希望有一个if if(rightService.hasRole("Admin") { ... },以避免为没有权限的用户更新值。

这是我第一次在这里提出问题,我希望得到一些答案,非常感谢。

1 个答案:

答案 0 :(得分:2)

目前不支持此功能。但是,您可以通过编写自定义映射器并为您拥有的不同角色提供不同的方法来实现此目的。您的映射器可能如下所示:

@Mapper
public abstract class MyMapper {

    private MyService service;

    public void update(Target target, Source source) {
        if (service.hasRole("Admin")) {
            updateForAdmin(target, source);
        } else if (service.hasRole("X")) {
            updateForX(target, source);
        }
    }


    //Mappings for Admin, ignore those that he / she has no rights
    protected abstract updateForAdmin(@MappingTarget Target target, Source source);

    //Mappings for X, ignore those that he / she has no rights
    protected abstract updateForX(@MappingTarget Target target, Source source);

    //setter injection
}

基本思想是为每个角色提供一个具有适当映射的方法。映射器只有一个公共方法,其余的只是MapStruct实现的方法。