麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

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

2024-07-14 08:41:53
字體:
來源:轉載
供稿:網友

實體與Dto自動賦值

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

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

第一種情況

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

import org.springframework.beans.BeanUtils;BeanUtils.copyProperties(origin, target);

第二種情況

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

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的過濾參數:

 /* 通過該方法對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操作,前端可能只修改某幾個屬性,而在后端處理時也只希望處理這幾個被賦值的屬性,這時我們使用下面的方法:

 @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的自動賦值,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 羞羞视频免费网站男男 | 欧美精品在线视频观看 | 色综合久久久久久久久久久 | 国产亚洲美女精品久久久2020 | a免费视频 | 国产精品99免费视频 | 精品一区二区三区免费毛片 | 草莓视频在线导航 | www.99热精品| caoporn国产一区二区 | 亚洲精品一区二区三区在线看 | 国内精品久久久久久2021浪潮 | 亚洲午夜免费电影 | 日韩精品免费一区二区三区 | 亚洲网站在线 | 激情午夜天| 黄色片在线免费播放 | 激情视频日韩 | 91精品国产91久久久 | 国产精品亚洲精品久久 | 久久久综合视频 | 日韩美香港a一级毛片免费 日韩激情 | 日韩精品中文字幕一区 | www.99tv| 免费黄色入口 | 久久久久久免费 | 国产1区2区3区中文字幕 | 亚洲欧美日韩免费 | 少妇一级淫片高潮流水电影 | 国产亚洲精品久久久久久久软件 | 久久久久久久久久久av | 国产一级在线看 | 成人精品久久久 | xnxx 日本19| 斗破苍穹在线免费 | 成年性羞羞视频免费观看 | 久久精品黄 | 黄色av网站免费 | 色a综合 | av电影院在线观看 | 国产成人精品一区二区视频免费 |