實體與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...