需要添加以下依賴包:
<!-- 解決dto,do,vo轉換問題 --> <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>5.5.1</version> </dependency>
Java轉換工具類如下:
import java.util.ArrayList; import java.util.List; import org.dozer.DozerBeanMapper; import org.dozer.Mapper; public class DtoEntityUtil { static Mapper mapper = new DozerBeanMapper(); public static <D,E> E trans(D t,Class<E> clazz){ if(t == null) return null; return mapper.map(t, clazz); } public static <D,E> List<E> trans(D[] ts,Class<E> clazz){ List<E> es = new ArrayList<E>(); if(ts == null) return es; for(D d:ts) { E e = (E)trans(d,clazz); if(e != null) es.add(e); } return es; } public static <D,E> List<E> trans(List<D> ts,Class<E> clazz){ List<E> es = new ArrayList<E>(); if(ts == null ) return es; for(D d:ts) { E e = (E)trans(d,clazz); if(e != null) es.add(e); } return es; } }
參考案例:
//下面兩段代碼是將entity轉換成dto;分別是單個對象轉換和集合對象轉換;一般用於向consumer提供數據
//WorkeRecord是entity,從數據庫中獲取的對象
DtoEntityUtil.trans(workeRecord, WorkerRecordDTO.class);
//es是List集合,里面的對象是WorkeRecord的實例
List<WorkerRecordDTO> ds = (List<WorkerRecordDTO>)DtoEntityUtil.trans(es, WorkerRecordDTO.class);
//================華麗分隔符==================
//下面例子是dto轉entity,一般用於向provider傳入對象
DtoEntityUtil.trans(menuDto, Menu.class);//將mentDto轉換成mentEntity List<User> users = DtoEntityUtil.trans(ts, User.class);//將dto集合ts轉換成entityList users