06.16 程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

java數據轉換啦

背景

java開發中一個對象的值賦值給另外一個對象,這樣的例子太多,頁面VO對象,需要轉換為業務mode對象,系統中存在大量的VO、DTO、DO、PO,大量的轉換代碼需要程序員一行一行敲。為了程序員少加班,我推薦幾個對象轉換工具包。

學習目標

  • 能提高開發效率,早點下班
  • 自己能結合工具包定製適合自己項目的工具

代碼案例

DTO(Data Transfer Object):數據傳輸對象

DO(Domain Object):領域對象

這兩個對象有大量相同屬性,注意有少數屬性類型不一樣sex和extInfo

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

DO對象用來mybatis入庫的

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

---------程序員,一般把類型屬性設計成枚舉,更安全更易懂--------------------

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

類型屬性枚舉

----------------模擬數據轉換過程,大家天天在寫這樣的代碼,如果屬性特別多,工作量不小------------------------

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

對象初始化

轉換邏輯:利用org.springframework.beans.BeanUtils工具幫我們自動轉換賦值-----spring的東西就是強大-----

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

轉換

結果完美的轉換了,DO就是我要存入數據庫表的對象

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

輸出結果

升級版案例

跟上面代碼完成一樣的功能,但轉換邏輯優化了。

我這裡是學的google的Guava工具實現 ,要看的這裡進去

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

泛型加回調函數

具體底層轉換工具包,大家根據項目情況合理選擇

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

我還是推薦spring的工具包

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

-------apache的工具包有些坑,不推薦使用

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

轉換邏輯:前面代碼一樣我就省略,這裡是回調函數加泛型

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

轉換優化

心得

  • 性能上cglib最好
  • 一般用spring就夠了
  • apache的這個工具用些坑,具體我就不講了。
  • 工具底層一般都是反射技術來實現的,如果對象複雜【比如DTO有繼承關係】,可以自己寫反射來實現。

關注 收藏 轉發,有錯誤請指點

需要完整demo代碼案例的,關注我,私信:轉換 ,我把代碼發你。

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

spring工具當然有

程序員天天敲的代碼:兩對象轉換賦值「get到轉換代碼節省90%」

apache大神坐鎮,系統穩


分享到:


相關文章: