什么是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 会按照默认的转换规则进行类型的转换,而且不同修饰符的属性也能正常进行映射。
以上就是小编今天的分享了,希望可以帮助到大家。