国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - springboot~ObjectMapper~dto到entity的自動賦值

springboot~ObjectMapper~dto到entity的自動賦值

2021-05-21 11:19張占嶺 Java教程

這篇文章主要介紹了springboot~ObjectMapper~dto到entity的自動賦值,本文分三種情況給大家介紹,需要的朋友可以參考下

實體與dto自動賦值

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

  1. 兩個實體屬性字段幾乎完全相同
  2. 兩個字體有部分字段相同
  3. 源實體只有部分字段賦值,目標實體有完整的值

第一種情況

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

?
1
2
import org.springframework.beans.beanutils;
beanutils.copyproperties(origin, target);

第二種情況

但是對于第2點來說,就沒有那么簡單了,再使用beanutils已經不能滿足我們的需要了。
我們可以使用jackson的objectmapper

?
1
2
3
4
5
6
7
8
9
10
11
import com.fasterxml.jackson.databind.deserializationfeature;
import com.fasterxml.jackson.databind.objectmapper;
import com.fasterxml.jackson.databind.objectreader;
import com.jd.fastjson.json;
objectmapper objectmapper = new objectmapper();
//配置該objectmapper在反序列化時,忽略目標對象沒有的屬性。凡是使用該objectmapper反序列化時,都會擁有該特性。
objectmapper.configure(deserializationfeature.fail_on_unknown_properties, false);
//讀入需要更新的目標實體
objectreader objectreader = objectmapper.readerforupdating(target);
//將源實體的值賦值到目標實體上
objectreader.readvalue(json.tojsonstring(source));

我們總結一下objectmapper的過濾參數:

?
1
2
3
4
5
6
7
8
9
10
/*
 通過該方法對mapper對象進行設置,所有序列化的對象都將按改規則進行系列化
 include.include.always 默認
 include.non_default 屬性為默認值不序列化
 include.non_empty 屬性為 空(“”) 或者為 null 都不序列化
 include.non_null 屬性為null 不序列化
 */
  objectmapper.setserializationinclusion(jsoninclude.include.non_default);
  string outjson = objectmapper.writevalueasstring(productdetail);
//上面代碼里,outjson的值將會過濾掉只有默認值的屬性

第三種情況

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

?
1
2
3
4
5
6
7
8
9
10
11
@requestmapping(value = "/{id}", method = requestmethod.put)
public httpentity update(@pathvariable int id, @requestbody productdetail productdetail)
  throws ioexception {
 productdetail existing = repository.findbyid(id).get();
 objectmapper.setserializationinclusion(jsoninclude.include.non_default);
 string outjson = objectmapper.writevalueasstring(productdetail);
 objectreader objectreader = objectmapper.readerforupdating(existing);
 objectreader.readvalue(outjson);
 repository.save(existing);
 return new responseentity<>(existing, httpstatus.accepted);
}

通過objectmapper的使用,確實讓我們少寫很多重復的代碼。

總結

以上所述是小編給大家介紹的springboot~objectmapper~dto到entity的自動賦值,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://www.cnblogs.com/lori/archive/2018/08/01/9400510.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一区二区三区久久久 | 久久综合伊人 | 国产精品网站在线观看 | 日韩成人在线观看 | 久久精品国产一区二区三区不卡 | 成人精品网站在线观看 | 日本a v在线播放 | 日本在线免费观看 | 在线观看精品91福利 | 亚洲一区二区精品 | 色网站在线观看 | 欧美在线小视频 | 亚洲福利一区二区 | 亚洲欧美日韩精品 | 欧美疯狂性受xxxxx另类 | 亚洲国产精品久久 | 国产人妖一区 | 亚洲免费看片 | 久久久久国产精品 | 亚洲国产精品久久 | 日韩欧美久久 | 精品国产乱码久久久久久久软件 | 精品国产乱码久久久久久蜜柚 | 日韩欧美中文字幕在线视频 | 一区二区三区国产视频 | 久久99视频 | 久久精品一区二区 | 性色综合 | 欧美亚洲一 | 久久99精品国产自在现线 | 久久精品免费 | a网站在线观看 | 亚洲国产精品99久久久久久久久 | 日韩有码在线观看 | 欧美久| 特黄特色大片在线观看视频网站 | 91 在线免费观看 | 玖玖在线免费视频 | 日韩中文在线 | 成人爽a毛片一区二区免费 成年人毛片视频 | 亚洲国产欧美在线 |