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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

dozer學(xué)習(xí)筆記

2019-11-14 22:02:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
dozer學(xué)習(xí)筆記簡(jiǎn)介

  Dozer是一款javaBean的映射工具,用于解決一個(gè)類(lèi)到另外一個(gè)類(lèi)的自動(dòng)適配功能,它即支持簡(jiǎn)單的映射,也支持復(fù)雜類(lèi)型的雙向遞歸映射(官網(wǎng))。

示例

  舉個(gè)例子,假設(shè)說(shuō)我們現(xiàn)在有User(用戶(hù))、UserDetail(用戶(hù)詳細(xì))兩個(gè)實(shí)體類(lèi),但對(duì)外公布時(shí),我們發(fā)布了UserDto、UserSimpleDto兩個(gè)傳輸對(duì)象,現(xiàn)在我們來(lái)實(shí)現(xiàn)他們之間的相互轉(zhuǎn)化:

用戶(hù):記錄登錄名、密碼  

 1 /** 2  * @author X 3  */ 4 public class User { 5  6     PRivate String loginName; //登錄名 7     private String passWord; //登錄密碼 8     private UserDetail userDetail; //用戶(hù)詳細(xì) 9 10     public String getLoginName() {11         return loginName;12     }13 14     public void setLoginName(String loginName) {15         this.loginName = loginName;16     }17 18     public String getPassword() {19         return password;20     }21 22     public void setPassword(String password) {23         this.password = password;24     }25 26     public UserDetail getUserDetail() {27         return userDetail;28     }29 30     public void setUserDetail(UserDetail userDetail) {31         this.userDetail = userDetail;32     }33 }
User.java

用戶(hù)詳情:記錄用戶(hù)的手機(jī)

 1 /** 2  * @author X 3  */ 4 public class UserDetail { 5  6     private String phoneNumber; //手機(jī)號(hào) 7  8     public String getPhoneNumber() { 9         return phoneNumber;10     }11 12     public void setPhoneNumber(String phoneNumber) {13         this.phoneNumber = phoneNumber;14     }15 }
UserDetail.java

用戶(hù)傳輸對(duì)象:記錄了用戶(hù)的登錄名、用戶(hù)的手機(jī)

 1 /** 2  * @author X 3  */ 4 public class UserDto { 5  6     private String userName; //用戶(hù)名 7     private String userPhone; //用戶(hù)手機(jī) 8  9     public String getUserName() {10         return userName;11     }12 13     public void setUserName(String userName) {14         this.userName = userName;15     }16 17     public String getUserPhone() {18         return userPhone;19     }20 21     public void setUserPhone(String userPhone) {22         this.userPhone = userPhone;23     }24 }
UserDto.java

用戶(hù)簡(jiǎn)單傳輸對(duì)象:記錄了用戶(hù)的登錄名

 1 /** 2  * @author X 3  */ 4 public class UserSimpleDto { 5     private String loginName; //登錄名 6  7     public String getLoginName() { 8         return loginName; 9     }10 11     public void setLoginName(String loginName) {12         this.loginName = loginName;13     }14 }
UserSimpleDto.javaUser->UserSimpleDto

  這個(gè)很簡(jiǎn)單,因?yàn)橹迪嗤瑹o(wú)需多余的配置,代碼如下:

import org.dozer.DozerBeanMapper;import org.dozer.Mapper;/** * @author X */public class Run {    public static void main(String[] args) {        //給目標(biāo)對(duì)象賦值        User user = new User();        user.setLoginName("shaguar");        user.setPassword("123456");        //轉(zhuǎn)換        Mapper mapper = new DozerBeanMapper();        UserSimpleDto dto = mapper.map(user, UserSimpleDto.class);        System.out.println(dto.getLoginName());    }}
Run.java

運(yùn)行結(jié)果:

User->UserDto

  這個(gè)相對(duì)來(lái)說(shuō)就復(fù)雜一些,因?yàn)閁serDto中不僅包含了User的name,也涉及到了UserDetail中的PhoneNumber,那就需要我們手動(dòng)配置來(lái)解決Map的問(wèn)題。

第一種:添加多個(gè)配置文件

映射配置

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3           xsi:schemaLocation="http://dozer.sourceforge.net 4           http://dozer.sourceforge.net/schema/beanmapping.xsd"> 5     <mapping> 6         <class-a>User</class-a> 7         <class-b>UserDto</class-b> 8         <field> 9             <a>UserDetail.phoneNumber</a>10             <b>userPhone</b>11         </field>12         <field>13             <a>loginName</a>14             <b>userName</b>15         </field>16     </mapping>17 </mappings>
UserToUserDetailConfig.xml

調(diào)用方式(只需要在映射之前先設(shè)置好配置文件即可。)

 1 import org.dozer.DozerBeanMapper; 2 import org.dozer.Mapper; 3  4 import java.util.ArrayList; 5 import java.util.List; 6  7 /** 8  * @author X 9  */10 public class Run {11     public static void main(String[] args) {12         //給目標(biāo)對(duì)象賦值13         User user = new User();14         user.setLoginName("shaguar");15         user.setPassword("123456");16         UserDetail userDetail = new UserDetail();17         userDetail.setPhoneNumber("1881234567890");18         user.setUserDetail(userDetail);19 20         List mappingFile = new ArrayList();21         mappingFile.add("UserToUserDtoConfig.xml");22         DozerBeanMapper mapper = new DozerBeanMapper();23         mapper.setMappingFiles(mappingFile);24         UserDto dto = mapper.map(user, UserDto.class);25         System.out.println(dto.getUserName());26         System.out.println(dto.getUserPhone());27 28     }29 }
Run.java

第二種:添加默認(rèn)配置文件(多個(gè)Mapping)

當(dāng)然,你如果不想每次都load一個(gè)配置文件,也可以按照dozer的約定,寫(xiě)入命名為dozerBeanMapping.xml的配置中,并將其放入根目錄下,這樣使用如下方式去創(chuàng)建dozer的Mapper即可:

 1 import org.dozer.DozerBeanMapper; 2 import org.dozer.DozerBeanMapperSingletonWrapper; 3 import org.dozer.Mapper; 4  5 import java.util.ArrayList; 6 import java.util.List; 7  8 /** 9  * @author X10  */11 public class Run {12     public static void main(String[] args) {13         //給目標(biāo)對(duì)象賦值14         User user = new User();15         user.setLoginName("shaguar");16         user.setPassword("123456");17         UserDetail userDetail = new UserDetail();18         userDetail.setPhoneNumber("1881234567890");19         user.setUserDetail(userDetail);20 21         Mapper mapper= DozerBeanMapperSingletonWrapper.getInstance();22         UserDto dto = mapper.map(user, UserDto.class);23         System.out.println(dto.getUserName());24         System.out.println(dto.getUserPhone());25     }26 }
Run.java

兩種方式均可以得到如下結(jié)果:


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 葵青区| 米林县| 建宁县| 平乐县| 浮山县| 波密县| 安溪县| 永登县| 宿州市| 梨树县| 祁东县| 恭城| 镇江市| 江山市| 新乡市| 紫云| 类乌齐县| 政和县| 肥西县| 道孚县| 麟游县| 江川县| 湘阴县| 容城县| 惠州市| 司法| 江油市| 柳林县| 蒙山县| 织金县| 怀安县| 始兴县| 嘉义县| 三河市| 彩票| 康平县| 陇川县| 宁化县| 虞城县| 娄烦县| 临泉县|