参考文档:
https://www.cnblogs.com/jingmoxukong/p/5952447.html#%E9%85%8D%E7%BD%AE-dozerbeanmapperfactorybean
dozer是什么?
dozer是一个JavaBean的映射工具库。
dozer的基本使用:
maven的引用:
<!--dozerBeanMapper的使用--> <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>5.5.1</version> </dependency>
sping的配置文件引入:
<!--配置文件用于使用DozerBeanMapper--> <bean id="mapper" class="org.dozer.DozerBeanMapper"> <property name = "mappingFiles"> <list> <value>spring/dozer.xml</value> </list> </property> </bean>
dozer.xml的内容:
<?xml version="1.0" encoding="UTF-8"?> <mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd"> <mapping date-format="yyyy-MM-dd"> <class-a>com.example.pojo.Student</class-a> <class-b>com.example.pojo.StudentB</class-b> <field> <a>aName</a> <b>bName</b> </field> <field> <a>aAge</a> <b>bAge</b> </field> <field> <a>aMoney</a> <b>bMoney</b> </field> </mapping> </mappings>
注意:属性名字相同的可以不用写到改映射里面。代码可以完成自动映射。
Student类与StudentB类的代码。
private String aName; private String bName; private long aAge; private long bAge; private double aMoney; private double bMoney;
注意:此处必须生成get/set方法。
代码中的具体实现:
@Autowired private DozerBeanMapper mapper; @RequestMapping(value = "/testDozer",method = RequestMethod.GET) @ResponseBody public String testDozer(){ Student student = new Student(); student.setaName("xupengbo"); student.setaMoney(100); student.setaAge(10); StudentB map = mapper.map(student, StudentB.class); return map.getbName();
}
以上就是dozer的基本使用。
另外介绍一下比较常用的深度映射。
StudentC:
public class StudentC {
private Animal animal;
StudentD:
public class StudentD {
private String studentName;
private double studengtMoney;
Animal:
public class Animal {
private String name;
private double money;
dozer.xml:
<mapping date-format="yyyy-MM-dd">
<class-a>com.example.testDozerPojo.StudentC</class-a>
<class-b>com.example.testDozerPojo.StudentD</class-b>
<field>
<a>animal.name</a>
<b>studentName</b>
</field>
<field>
<a>animal.money</a>
<b>studengtMoney</b>
</field>
</mapping>