【发布时间】:2013-01-02 12:35:12
【问题描述】:
Dozer(v. 5.3.2) 可以将 int 类型映射到 Boolean(Wrapper) 类型吗?
【问题讨论】:
Dozer(v. 5.3.2) 可以将 int 类型映射到 Boolean(Wrapper) 类型吗?
【问题讨论】:
通过粗略阅读文档,您可以通过自定义 BeanMapping 将几乎任何内容映射到任何内容,所以...“是”
【讨论】:
return i != 0
是的....您可以将 int 类型映射到 Boolean 或任何其他数据类型。对于这种映射,您需要Custom Converters
【讨论】:
public class NewDozerConverter
extends DozerConverter<Integer, Boolean> {
public NewDozerConverter() {
super(Integer.class, Boolean.class);
}
public Boolean convertTo(Integer source, Boolean destination) {
if (source > 1) {
return Boolean.TRUE;
} else if (source < 0) {
return Boolean.FALSE;
}
throw new IllegalStateException("Unknown value!");
}
public Integer convertFrom(Boolean source, Integer destination) {
if (Boolean.TRUE.equals(source)) {
return 1;
} else if (Boolean.FALSE.equals(source)) {
return 0;
}
throw new IllegalStateException("Unknown value!");
}
}
【讨论】:
convertTo(Integer source, Boolean destination) 应该考虑源整数等于 1 或 0 的情况。更新代码:` public Boolean convertTo(Integer source, Boolean destination) { if (source >= 1) { return Boolean 。真的; } else if (source
如果您只需要将 0 和 1 分别映射为 false 和 true,则 Dozer 开箱即用即可处理。如果要将 0 映射为 false 并将任何其他值映射为 true,则需要 custom converter。
【讨论】: