1 导入依赖
<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-spring-boot-starter</artifactId>
<version>6.5.0</version>
</dependency>
2 DozerUtil对象转换工具类
/**
* @author lyf
* @description
* @create 2022-06-08 20:47
* dozer 对象工具类
**/
@Componet
public class DozerUtil {
//dozer-spring-boot-stater中注入的对象
@Autowired
private Mapper mapper;
public DozerUtil (Mapper mapper){
this.mapper=mapper;
}
//单个对象转换
public <T> T map(Object source,Class<T> destination){
return mapper.map(source,destination);
}
//List 对象转换
public <T> List<T> mapList(List<Object> sourceList,Class<T>destination){
if(sourceList==null||destination==null){
return null;
}else{
//遍历转换
List<T> list=new ArrayList<>();
for(Object o:sourceList){
T obj=map(o,destination);
list.add(obj);
}
return list;
}
}
}
3 Dozer对象转换配置文件
对象的转换离不开属性与属性间的映射关系。包括不同属性名,同属性名不同属性的类别的之间对象的转换关系。该转换关系离不开dozer的配置xml文件。
该文件通常放在resourses 文件夹下,例如新建dozer-mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://dozermapper.github.io/schema/bean-mapping"
xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping
http://dozermapper.github.io/schema/bean-mapping.xsd">
<!--描述两个类中属性的对应关系,对于两个类中同名的属性可以不映射-->
<!-- <class-a>与<class-b> 中描述的对象的限定类名 -->
<mapping date-format="yyyy-MM-dd">
<class-a>对象a</class-a>
<class-b>对象b</class-b>
<field>
<a>属性1</a>
<b>属性1</b>
</field>
<field>
<a>属性2</a>
<b>属性2</b>
</field>
<field>
<a>属性3</a>
<b>属性3</b>
</field>
</mapping>
</mappings>
4 配置DozerProperties
dozer:
mappingFiles:
- classpath: dozer-mapper.xml