国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

dozker--實現map 實體 DTO之間的相互轉化

2019-11-06 06:10:09
字體:
來源:轉載
供稿:網友

Dozer 是一個對象轉換工具。

Dozer可以在javaBean到JavaBean之間進行遞歸數據復制,并且這些JavaBean可以是不同的復雜的類型,

所有的mapping,Dozer將會很直接的將名稱相同的fields進行復制,如果field名不同,或者有特別的對應要求,則可以在xml中進行定義

dozer是深層復制的,即使原實體中有其他對象的引用,只要目標數據中有對應的引用對象或者配置文件中指定了對應的mapper,目標數據也會獲取這個引用對象

java工具類是:

public class DozerBeanCopy {	 PRivate static DozerBeanMapper dozer = new DozerBeanMapper();	 	 public static void copy(Object source, Object destinationObject) {	        dozer.map(source, destinationObject);	 }	 	public static void main(String[] args) {				//map ->實體  對于map中和實體中屬性名一樣的字段會自動進行轉化,不一樣的字段轉換不成功		Student student=new Student();		HashMap<Object, Object> map=new HashMap<Object,Object>();		map.put("id", "id");		map.put("name", "name");		map.put("age1", 11);		copy(map, student);		System.out.println(student.getName());		System.out.println(student.getAge());				//實體->dto dto->實體的相互轉化,其中目標數據不一樣的字段不會自動轉化		Student student2=new Student("id", "name", 11);		StudentDTO sDto=new StudentDTO();		copy(student2, sDto);		System.out.println(sDto.getName());				//方式二:該方式用于數據類型不一致,或者名稱不相同或者有級聯關系等情況下的映射,該方式可以添加多個配置文件		Student student3=new Student("id", "name", 11);		StudentVO svo=new StudentVO();		List myMappingFiles = new ArrayList();		myMappingFiles.add("dozerBeanMapping.xml");		DozerBeanMapper mapper = new DozerBeanMapper();		mapper.setMappingFiles(myMappingFiles);		mapper.map(student3, svo);		System.out.println(svo.getNameVo());			}}配置文件如下:

<?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.test.DozerBeanCopy.Student</class-a><class-b>com.test.DozerBeanCopy.StudentVO</class-b><field><a>name</a><b>nameVo</b></field><field><a>age</a><b>ageVo</b></field></mapping></mappings>

web:

1.在spring整合dozer的時候可以在spring的配置文件中加入以下代碼:

<bean id="mapper" class="org.dozer.spring.DozerBeanMapperFactoryBean">      <property name="mappingFiles"><list>       <value>classpath*:dozer-config/dozerBeanMapping.xml</value>          </list>      </property>   </bean>

2.在basecontroller或者baseService下面注入這個bean

private Mappermapper ;public Mapper getMapper(){   return mapper;}public void setMapper(Mapper mapper){   this.mapper = mapper;}

3.我們把dozker交給spring去管理后就可以使用以下方式直接復制對象

getMapper().map(sourceObject,DestinationObject.class)

使用過程中的錯誤:

1.xml解析錯誤---好吧,我新建的文件,第一行寫成這樣了

<?xmlversion="1.0"encoding="UTF-8"?>

so,你看出來了沒?應該這樣 

<?xmlversion="1.0"encoding="UTF-8"?>

Caused by: org.xml.sax.SAXException: Parsing Fatal ErrorLine:    1URI:     nullMessage: White space is required before the encoding pseudo attribute in the XML declaration.	at org.dozer.loader.xml.XMLParserFactory$DozerDefaultHandler.fatalError(XMLParserFactory.java:113)	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)

2.缺少slf4j-api.jar的依賴

Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)	at java.security.accessController.doPrivileged(Native Method)	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)3.缺少commons-lang3.jar依賴

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils	at org.dozer.util.ResourceLoader.getResource(ResourceLoader.java:59)	at org.dozer.util.DefaultClassLoader.loadResource(DefaultClassLoader.java:49)	at org.dozer.config.GlobalSettings.loadGlobalSettings(GlobalSettings.java:116)4.缺少 commons-beans.jar

Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.ConversionException	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)	at java.security.AccessController.doPrivileged(Native Method)	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

總之,需要引入的jar包有:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣汉县| 略阳县| 城市| 辽阳县| 昌吉市| 扬中市| 杭锦后旗| 富蕴县| 南漳县| 长葛市| 琼海市| 政和县| 巴中市| 北碚区| 克拉玛依市| 布拖县| 师宗县| 永城市| 克什克腾旗| 昌平区| 徐闻县| 牟定县| 柳江县| 会昌县| 抚顺县| 旬邑县| 论坛| 泸水县| 灵山县| 苏州市| 忻城县| 景宁| 汾西县| 临西县| 高陵县| 永福县| 通化县| 犍为县| 拉孜县| 长子县| 缙云县|