1. 程式人生 > >Orika對映工具MapperFactory使用方法,及LocalDateTime轉換異常

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