也可以在实体中使用@Mapping注解。
下面列出我的实体和VO例子:
Users.javaimportlombok.Data;importorg.dozer.Mapping;
@Datapublic classUsers {
@Mapping("Id")privateBigDecimal userId;privateString userName;privateString password;privateString firstName;privateString lastName;
}
@Mapping(“Id”) 对应的以下UsersVO的Id
UsersVO.javaimportlombok.Data;importjava.math.BigDecimal;
@Datapublic classUsersVO {privateBigDecimal Id;privateString userName;privateString password;3、创建GeneralConvertor.javaimportorg.dozer.Mapper;importorg.springframework.stereotype.Component;importjavax.annotation.Resource;importjava.util.ArrayList;importjava.util.List;importjava.util.Set;importjava.util.TreeSet;/*** dozer 转换器*/@Componentpublic classGeneralConvertor {
@Resource
Mapper mapper;/*** List 实体类 转换器
*
*@paramsource 原数据
*@paramclz 转换类型
*@param
*@param
*@return
*/
public List convertor(List source, Classclz) {if (source == null) return null;
List map = new ArrayList<>();for(S s : source) {
map.add(mapper.map(s, clz));
}returnmap;
}/*** Set 实体类 深度转换器
*
*@paramsource 原数据
*@paramclz 目标对象
*@param
*@param
*@return
*/
public Set convertor(Set source, Classclz) {if (source == null) return null;
Set set = new TreeSet<>();for(S s : source) {
set.add(mapper.map(s, clz));
}returnset;
}/*** 实体类 深度转换器
*
*@paramsource
*@paramclz
*@param
*@param
*@return
*/
public T convertor(S source, Classclz) {if (source == null) return null;returnmapper.map(source, clz);
}public voidconvertor(Object source, Object object) {
mapper.map(source, object);
}public voidcopyConvertor(T source, Object object) {
mapper.map(source, object);
}
}
(注意:该类需要添加@Component,让它能被扫描到)4、测试
@Servicepublic classUsersService{
@Resource
GeneralConvertor convertor;
@Overridepublic ListfindAll() {
List list =usersMapper.findAll();//关键代码
List usersVO =convertor.convertor(list,UsersVO.class);returnusersVO ;
}
}