Orika對映工具MapperFactory使用方法,及LocalDateTime轉換異常
一、建立MapperFactory
手動建立
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
spring建立
@Bean
public MapperFactory getFactory(){
return new DefaultMapperFactory.Builder().build();
}
二、使用方法
如果兩個類中的屬性名一樣,型別不一樣,會自動轉換。如果無法轉換會報錯。
1. 單個類對映單個類(欄位名不完全一樣)
//注意User中的name和UserVO中的username屬性名不同,age的型別也不同
class User {
private String name;
private String age;
private String sex;
//Setter,Getter
}
class UserVO {
private String username;
private Integer age;
private String sex;
//Setter,Getter
}
public void UserToUserVO(User user) {
//先註冊以下對映方式
mapperFactory.classMap(User.class, UserVO.class)
.field("name" ,"username")//不一樣的欄位對映
.byDefault()//剩餘的欄位對映
.register();
UserVO uservo = mapperFactory.getMapperFacade().map(user, UserVO.class);
}
2. 單個類對映單個類(欄位名完全一樣)
//注意age的型別不同
class User {
private String username;
private String age;
private String sex;
//Setter,Getter
}
class UserVO {
private String username;
private Integer age;
private String sex;
//Setter,Getter
}
public void UserToUserVO(User user) {
UserVO uservo = mapperFactory.getMapperFacade().map(user, UserVO.class);
}
3. 集合對映呈另一個泛型的集合
//注意User中的name和UserVO中的username屬性名不同,age的型別也不同
class User {
private String name;
private String age;
private String sex;
//Setter,Getter
}
class UserVO {
private String username;
private Integer age;
private String sex;
//Setter,Getter
}
public void copyUserListToUserVOList(List<User> userList){
//手動配置不一樣的屬性轉換
mapperFactory.classMap(User.class, UserVO.class)
.field("name","username")//不一樣的欄位對映
.byDefault()//剩餘的欄位對映
.register();
//轉換List
List<UserVO> userVOList = mapperFactory.getMapperFacade().mapAsList(userList, UserVO.class);
//列印驗證一下(重寫UserVO的tostring)
userVOList.forEach(user -> {
System.out.println(user);
});
三、用了java8中的LocalDateTime結果發現轉換異常,解決方法為:在容器中增加一個bean,如下:
@Component
public class OrikaMapperFactoryExtend {
@Autowired
private MapperFactory mapperFactory;
@PostConstruct
public void init() {
mapperFactory.getConverterFactory().registerConverter(new LocalDateTimeConverter());
mapperFactory.getConverterFactory().registerConverter(new LocalDateConverter());
mapperFactory.getConverterFactory().registerConverter(new LocalTimeConverter());
}
private class LocalDateTimeConverter extends BidirectionalConverter<LocalDateTime, LocalDateTime> {
@Override
public LocalDateTime convertTo(LocalDateTime source, Type<LocalDateTime> destinationType) {
return LocalDateTime.from(source);
}
@Override
public LocalDateTime convertFrom(LocalDateTime source, Type<LocalDateTime> destinationType) {
return LocalDateTime.from(source);
}
}
private class LocalDateConverter extends BidirectionalConverter<LocalDate, LocalDate> {
@Override
public LocalDate convertTo(LocalDate source, Type<LocalDate> destinationType) {
return LocalDate.from(source);
}
@Override
public LocalDate convertFrom(LocalDate source, Type<LocalDate> destinationType) {
return LocalDate.from(source);
}
}
private class LocalTimeConverter extends BidirectionalConverter<LocalTime, LocalTime> {
@Override
public LocalTime convertTo(LocalTime source, Type<LocalTime> destinationType) {
return LocalTime.from(source);
}
@Override
public LocalTime convertFrom(LocalTime source, Type<LocalTime> destinationType) {
return LocalTime.from(source);
}
}
}
相關推薦
Orika對映工具MapperFactory使用方法,及LocalDateTime轉換異常
一、建立MapperFactory 手動建立 MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); s
NATApp內網對映工具使用方法以及Tomcat自建本地web服務
NatApp內網對映工具使用以及tomcat自建本地服務 最近一直在搞微信和微信小程式開發,本地除錯需要進行內網對映穿透,於是就寫了這篇文章。又由於最近重灌了系統,配置好的tomcat沒有了,在網上找的教程多半是坑,還不如自己寫下來省事情,同時內網對映也
詳解FSMO的五種角色和FSMO角色辨別方法及角色轉換方法
FSMO中文翻譯成操作主控,在說明FSMO的作用以前,先給大家介紹兩個概念: 單主複製:所謂的單主複製就是指從一個地方向其它地方進行復制,這個主要是用於以前的NT4域,我們知道,在NT4域的年代,域網路上區分PDC和BDC,所有的複製都是從PDC到BDC上進行的,因為NT4域用的是這種複製機構
最全面的Java字節byte操作,處理Java基本數據的轉換及進制轉換操作工具,流媒體及java底層開發項目常用工具類
進制 string 常用工具類 cat i++ logs 指定位置 tput off 前言:用於處理Java基本數據的轉換及進制轉換操作工具 一、實現功能 1、int預byte互轉 2、int與byte[]互轉 3、short與byte互轉 4、short與byte[]互轉
webpack構建工具常見問題及解決方法
webpack 常見問題 build報錯 webpack構建工具常見問題及解決方法 在運用webpack開發項目的時候經常會遇到各種各樣的問題,我對實際開發項目中實際遇到的一些問題 進行總結,希望能幫助到大家。 ?? 1. 構建需要的包未添加依賴報錯 Module not fo
性能測試監控工具nmon安裝及使用方法
chm pla 工作 模板 生產 數據文件 尋找 pan series 1、概述 監控,在檢查系統問題或優化系統性能工作上是一個不可缺少的部分。通過操作系統監控工具監視操作系統資源的使用情況,間接地反映了各服務器程序的運行情況。根據運行結果分析可以幫助我們快速定位系統問
模仿使用者行為的爬蟲設計方法及工具推薦
為了更加便捷高效地工作,程式設計師在設計爬蟲之初就會考慮,用爬蟲去模擬使用者的行為,以減少IP被封的機率。模擬使用者行為一是為了太陽ip軟體爬取資料非同步載入頁面方面,二也是為了爬蟲行為高度模仿使用者行為,最終目的還是為了高匿——高度隱匿自己的真實ip。 那麼,應該怎麼做高匿呢? 1、user-agent
python呼叫第三方工具(命令)的方法及區別
一 前言 在上篇《關於os.popen你可能不知道的》中,提到了呼叫第三方工具或命令的os.popen方法,同時也指出了使用中可能遇到的坑。本文就介紹下python提供了哪些方法可以執行第三方工具或命令,以及它們的用法和區別。 二 主要方法 1. os.system 這
工作方法及工具
通用 OneNote 使用方法及亮點。 Xmind 使用方法及亮點。 Kindle 使用方法及亮點。 收集——整理——思考——輸出,模型介紹及注意點。 番茄工作法、巴赫音樂在自我管理中應用。 鬧鐘 https://pan.baidu.com/s/1qY3EnFm#li
Java將一個基本資料型別轉換為String的方法及效率比較
把一個基本資料型別轉為字串型別,有三種方法。 假設a是integer型別的資料 方法1:a.toString(); 方法2:String.valueOf(a); 方法3:a+""; 效率比較: 方法1效率最快、其次到方法2、最後才是方法3; 原因: 1.a
php xml與陣列轉換問題,封裝方法及字串替換
/** * [將xml轉為array] * @param string $xml xml字串或者xml檔名 * @param bool $isFile 傳入的是否是xml檔名 * @re
Touch 方法&屬性 對映工具
Touch 方法&屬性 對映工具(0.5 版本) 標籤 : github 線上後門與介面除錯: 原先需要測試一個介面(如Dubbo、DAO), 或為線上留後門, 需要寫大量的Web層(Api、Servlet或Controller)程
NSMutableString和NSString區別,及相互轉換方法
NSString是一個不可變的字串物件。這不是表示這個物件宣告的變數的值不可變,而是表示它初始化以後,你不能改變該變數所分配的記憶體中的值,但你可以重新分配該變數所處的記憶體空間。而NSMutableString是可變的,意味著你可以追加它的記憶體空間,或者修改它所分配的記憶體空間中的值。 因
Unicode與中文轉換工具類方法(轉)
/* * 中文轉unicode編碼 */ public static String gbEncoding(final String gbString) { char[] utfBytes = gbString.toCharArray(); St
在javascript中訪問web service方法及程式碼生成工具wsdl2js
根據web service的定義,和web service進行請求響應要用SOAP(http://www.w3c.org/TR/soap) 對請求響應的資料進行封裝,客戶端對請求資料用SOAP封裝,然後用HTTP協議傳送到web service的接收地址,web servic
Window環境下配置Redis服務的方法及檢視快取資料的工具介紹
服務端是以服務的形式執行,將Redis服務端解壓到某個目錄,然後執行cmd執行命令: redis-server.exe --service-install redis.windows.conf --loglevel verbose 注意事項,修改Redis埠及密碼的配置在檔案redis.windows-
java8 時間處理 LocalDate LocalTime LocalDateTime 及毫秒轉換
LocalDate 各種和日期的操作,以天為最小單位,支援 日,月,年,星期的增加和減少,計算方便,格式化靈活。沒有時分秒。LocalTime 沒有日期,只是時間,就是時分秒,毫秒,可以選擇不用毫秒,可以進行相應的加減計算。LocalDateTime 完整時間,年月日,時分秒
聊聊Android影象格式類及影象轉換方法
本文主要介紹Android影象格式類及影象轉換方法,一款軟體的開發和影象密切相關,特別是移動應用程式,在視覺效果、使用者的體驗效果等方面是至關重要的,在Android程式開發的過程中,瞭解存在哪些影象
MyBatis的4種引入對映器的方法,及報錯解決方案
1.用檔案路徑引入對映器 <mappers> <mapper resource="xxxMapper.xml"/> </mappers> 2.用包名引入對映器 <mappers> <pac
【iOS開發-51】案例學習:動畫新寫法、刪除子視圖、視圖順序、延遲方法、button多功能使用方法及icon圖標和啟動頁設置
無法查看 font targe 技術 value lstat tostring sta dict 案例效果: (1)導入所需的素材,然後用storyboard把上半截位置和大小相對固定的東西布局起來。當然,這些控件也要定義成對應地IBOutlet和IBActio