如何告诉Dozer使用编程API绕过每个字段映射空字符串或空字符串值?

Dan*_*lan 4 java dozer

常见问题解答说明了如何使用XML执行此操作。这显示了如何使用API按类进行操作。问题是您必须在课堂上设置它。如果我只想在一个领域上怎么办?这可能吗?

che*_*1k4 5

您不需要转换器。推土机可以轻松做到:

import static org.dozer.loader.api.TypeMappingOptions.mapNull;
import static org.dozer.loader.api.TypeMappingOptions.mapEmptyString;

...

public Mapper getMapper() {
    DozerBeanMapper mapper = new DozerBeanMapper();
    mapper.addMapping(beanMappingBuilder());
    return mapper;
}

private BeanMappingBuilder beanMappingBuilder() {
    return new BeanMappingBuilder() {
        @Override
        protected void configure() {
            mapping(ClassA.class, ClassB.class, mapNull(false), mapEmptyString(false));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*lan 3

我能够通过为此创建自己的自定义转换器来完成我所需要的任务。这是代码:

import org.apache.commons.lang.StringUtils;
import org.dozer.DozerConverter;

public class IfNotBlankConverter extends DozerConverter<String, String> {

    public IfNotBlankConverter() {
        super(String.class, String.class);
    }

    private String getObject(String source, String destination) {
        if (StringUtils.isNotBlank(source)) {
            return source;
        } else {
            return destination;
        }
    }

    @Override
    public String convertTo(String source, String destination) {
        return getObject(source, destination);
    }

    @Override
    public String convertFrom(String source, String destination) {
        return getObject(source, destination);
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个:

import org.dozer.DozerConverter;

public class IfNotNullConverter extends DozerConverter<Object, Object> {

    public IfNotNullConverter() {
        super(Object.class, Object.class);
    }

    @Override
    public Object convertTo(Object source, Object destination) {
        return getObject(source, destination);
    }

    @Override
    public Object convertFrom(Object source, Object destination) {
        return getObject(source, destination);
    }

    private Object getObject(Object source, Object destination) {
        if (source != null) {
            return source;
        } else {
            return destination;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)