什么是dozer java,让我们一起了解一下?
Dozer 是一个对象转换工具。Dozer可以在JavaBean到JavaBean之间进行递归数据复制,并且这些JavaBean可以是不同的复杂的类型。所有的mapping,Dozer将会很直接的将名称相同的fields进行复制,如果field名不同,或者有特别的对应要求,则可以在xml中进行定义。
为什么要使用Dozer?
因为分析多层架构的J2EE系统,经常存在JavaBean直接的拷贝。比如我们在DAO层,通过Do取得业务层需要的数据,将这些数据传递给Service层的VO。Do与VO就存在典型的值拷贝。
典型的解决方案就是手动拷贝,代码中充斥大量Set 和Get方法,真正的业务被埋藏值与值的拷贝之中。
另一种方案就是使用BeanUtil,但BeanUtil不够很好的灵活性,又时候还不得不手动拷贝。Dozer可以灵活的对对象进行转换,且使用简单。
那么如何让Dozer自动完成User类到ApiUserDestination类的映射?
1、创建两个 Java Bean 类:
public class User {
private String name;
private Integer age;
private Date birthday;
// 省略 setter 和 getter 方法
}public class UserApiDestinationObject {
private String name;
private String age;
public String birthday; // 重写 toString 方法,方便测试
@Override
public String toString() {
return "UserApiDestinationObject{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", birthday='" + birthday + '\'' +
'}';
}
// 省略 getter、setter 方法
}2、测试:
@Test
public void apiTest() {
Mapper mapper = new DozerBeanMapper();
User user = new User();
user.setName("sid10t.");
user.setAge(3);
user.setBirthday(new Date());
UserApiDestinationObject destinationObject = mapper.map(user, UserApiDestinationObject.class);
System.out.println(destinationObject);
}3、输出:
UserApiDestinationObject{name='sid10t.', age='3', birthday='Tue Mar 08 10:56:02 CST 2022'}此时,Dozer 自动完成 User 类到 ApiUserDestination 类的映射。这是 Dozer 的默认映射方式——隐式映射,Dozer 自动的将两个实体类的相同属性名的属性进行映射。如果两个属性的属性名相同,但是类型不同,Dozer 会按照默认的转换规则进行类型的转换,而且不同修饰符的属性也能正常进行映射。
以上就是小编今天的分享了,希望可以帮助到大家。