2019-07-11
**/
public class Test {
private static MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
private static MapperFacade mapperFacade;
static {
mapperFactory.getConverterFactory().registerConverter("yuanToCentConverter", new YuanToCentConverter());
mapperFactory.getConverterFactory().registerConverter("centToYuanConverter", new CentToYuanConverter());
mapperFacade = mapperFactory.getMapperFacade();
}
static class ProductVo {
private BigDecimal price;
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
static class ProductDto {
private Integer price;
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
}
public static class YuanToCentConverter extends CustomConverter<BigDecimal, Integer> {
@Override
public Integer convert(BigDecimal source, Type<? extends Integer> destinationType, MappingContext mappingContext) {
return source.multiply(new BigDecimal(100)).intValue();
}
}
public static class CentToYuanConverter extends CustomConverter<Integer, BigDecimal> {
@Override
public BigDecimal convert(Integer source, Type<? extends BigDecimal> destinationType, MappingContext mappingContext) {
return new BigDecimal(source).divide(new BigDecimal(100), BigDecimal.ROUND_HALF_UP);
}
}
public static void main(String[] args) {
mapperFactory.classMap(ProductVo.class, ProductDto.class)
.fieldMap("price", "price").converter("yuanToCentConverter")
.add()
.byDefault()
.register();
mapperFactory.classMap(ProductDto.class, ProductVo.class)
.fieldMap("price", "price").converter("centToYuanConverter")
.add()
.byDefault()
.register();
/*
1.入口数据,元转分----vo to dto
*/
ProductVo vo1 = new ProductVo();
vo1.setPrice(new BigDecimal(11));
ProductDto dto1 = new ProductDto();
mapperFacade.map(vo1, dto1);
/*
2.回显数据,分转元---dto to vo
*/
ProductDto dto2 = new ProductDto();
dto2.setPrice(10);
ProductVo vo2 = new ProductVo();
mapperFacade.map(dto2, vo2);
System.out.printf("" + dto1 + vo2);
package test;
import ma.glasnost.orika.CustomConverter; import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.MappingContext; import ma.glasnost.orika.impl.DefaultMapperFactory; import ma.glasnost.orika.metadata.Type;
import java.math.BigDecimal;
/**
2019-07-11 **/ public class Test { private static MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); private static MapperFacade mapperFacade;
static { mapperFactory.getConverterFactory().registerConverter("yuanToCentConverter", new YuanToCentConverter()); mapperFactory.getConverterFactory().registerConverter("centToYuanConverter", new CentToYuanConverter()); mapperFacade = mapperFactory.getMapperFacade(); }
static class ProductVo { private BigDecimal price;
}
static class ProductDto { private Integer price;
}
public static class YuanToCentConverter extends CustomConverter<BigDecimal, Integer> { @Override public Integer convert(BigDecimal source, Type<? extends Integer> destinationType, MappingContext mappingContext) { return source.multiply(new BigDecimal(100)).intValue(); } }
public static class CentToYuanConverter extends CustomConverter<Integer, BigDecimal> { @Override public BigDecimal convert(Integer source, Type<? extends BigDecimal> destinationType, MappingContext mappingContext) { return new BigDecimal(source).divide(new BigDecimal(100), BigDecimal.ROUND_HALF_UP); } }
public static void main(String[] args) {
} }