DTO到entity自動賦值 自用

2021-10-19 01:19:44 字數 1585 閱讀 8974

實體與dto自動賦值

在開發的過程中,實體之間相互賦值是很正常的事,但是我們一般的方法都通過set和get方法來進行的,如果要賦值的字段少那還行,但是需要賦值的字段超過10個,那就是個災難,你會看到整屏**中全是set和get方法。

1.兩個實體屬性字段幾乎完全相同

2.兩個字型有部分字段相同

3.源實體只有部分字段賦值,目標實體有完整的值

第一種情況

對於第1點來說,我們用到最多的就是entity和dto之間的轉換了,這個我們可以使用spring的工具類beanutils來解決,這裡要注意的一點是,第乙個引數是源,第二個引數是目標。

import org.springframework.beans.beanutils;

beanutils.

copyproperties

(origin, target)

;

import com.fasterxml.jackson.databind.deserializationfeature;

import com.fasterxml.jackson.databind.objectreader;

import com.jd.fastjson.json;

new();

configure

(deserializationfeature.fail_on_unknown_properties,

false);

//讀入需要更新的目標實體

readerforupdating

(target)

;//將源實體的值賦值到目標實體上

objectreader.

readvalue

(json.

tojsonstring

(source)

);

/*

include.include.always 預設

include.non_default 屬性為預設值不序列化

include.non_empty 屬性為 空(「」) 或者為 null 都不序列化

include.non_null 屬性為null 不序列化

*/setserializationinclusion

(jsoninclude.include.non_default)

;writevalueasstring

(productdetail)

;//上面**裡,outjson的值將會過濾掉只有預設值的屬性

第三種情況

本情況主要對於從dto到entity轉換過程**現 ,比如乙個put操作,前端可能只修改某幾個屬性,而在後端處理時也只希望處理這幾個被賦值的屬性,這時我們使用下面的方法:

從DTO到充血模型

充血模型是marting fowler提出的概念,表示乙個包含領域知識 業務邏輯 的物件。與充血模型相對的是貧血模型。貧血模型是偽裝成領域模型的資料容器 data holder 貧血模型只包含getter setter,沒有任何領域知識。乙個和貧血模型非常相近的概念是dto。dto只有getter ...

symfony更新entity時自動設定時間字段

1 在更新entity時自動設定時間字段 namespace tranz bmtestbundle entity testpage orm table name test page orm entity orm haslifecyclecallbacks 這裡引入doctrine生命週期管理的函式 ...

Office檔案自動同步到OneDrive方法

2 搜尋cmd命令視窗,右鍵以管理員身份執行。3 在輸入框內輸入以下命令 mklink d c users lenovo onedrive documents 檔案 c users lenovo desktop 檔案 然後回車即可,出現如圖所示的提示就代表已經將該資料夾 或檔案 上傳到onedriv...