最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Beanutils.copyproperties實(shí)體類對象不一致的問題

 更新時間:2021年06月16日 09:54:43   作者:Java中的kids  
這篇文章主要介紹了解決Beanutils.copyproperties實(shí)體類對象不一致的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

今天給大家分析一個解決Beanutils.copyproperties實(shí)體類對象名不一致的解決方法,一般我們在兩個對象拷貝的問題上,我個人用的比較多的就是Beanutils.copyproperties,字段名如果不一致的話就去實(shí)體類中使用重載,把當(dāng)前實(shí)體類的對象賦值給另外一個對象,也有用到set(),當(dāng)然這些也都能解決Beanutils.copyproperties實(shí)體類屬性不一致的問題,不過今天要給大家分享的是,不用set()和實(shí)體類的重構(gòu),使用類的反射機(jī)制去完成!

話不多說直接開始:

我是選擇重寫了一個實(shí)體類copy工具類首先要獲取傳過來的兩個對象的類( getClass() 方法),

通過獲取類再去獲取對象中的屬性

( getDeclaredFields() 方法)

fieId.setAccessible(true) 方法是false時不允許通過反射訪問該字段,所以要設(shè)置成true用一個HashMap去接受,

第二個類也是一樣的操作

都說了是解決實(shí)體類屬性不一致的方法啦,所以實(shí)體類要有不一樣的字段,那么我們應(yīng)該怎么讓系統(tǒng)知道這個字段和那個字段是要干一件事情呢?

就比如,欸我今天不去釣魚,要去當(dāng)舔🐕,就是玩,朋友他只能去當(dāng)舔🐕,我們的目的都是當(dāng)舔🐕,但是出發(fā)點(diǎn)都是不同,所以要讓系統(tǒng)知道我們要去干嘛 這時候要用到一個注解(FieldMap )讓系統(tǒng)清楚我們要去干同一件事情

這是FieldMap類

既然我們已經(jīng)讓系統(tǒng)知道了誰要去干嘛了,當(dāng)然要去獲取他了,這時候就要用到fleId.getAnnotation()方法了,獲取注解上的Name的值,然后拿Name的值去做判斷,所以用到了getType()去獲取類型去做判斷

這樣就解決了Beanutils.copyproperties實(shí)體類對象不一致就copy不進(jìn)去的問題了。

spring的BeanUtils.copyProperties(obj1, obj2);復(fù)制對象時字段類型不一致,導(dǎo)致賦值不上

當(dāng)用spring的BeanUtils.copyProperties(obj1, obj2);對象進(jìn)行復(fù)制時,因?yàn)樵趏bj1 類型的對象中定義的屬性類型不同(set方法中用的是Integer類型,get方法中返回的是int類型):

public int getNumber() {
    return number;
  }
  public void setNumber(Integer number) {
    this.number = number;
  }

這樣在使用復(fù)制方法時,就不會對這個number屬性進(jìn)行賦值。這里必須是:

public int getNumber() {
    return number;
  }
  public void setNumber(int number) {
    this.number = number;
  }

這里是因?yàn)椋簊pring在利用反射復(fù)制對象時,是以javaBean的規(guī)范來使用get/set方法進(jìn)行設(shè)置值的。同時set方法的參與類型,在classLoader中,也會被計(jì)為函數(shù)名的一部分。

所有這里必須都是int類型或者都是integer類型。否則spring就不會對該屬性進(jìn)行復(fù)制相應(yīng)的值。

第二個知識點(diǎn):

應(yīng)用場景:當(dāng)我修改一個工程里的jar包內(nèi)的一個類時(其實(shí)改動,就是把上一個知識點(diǎn)里的Integer類型修改成了int類型),然后到去替換服務(wù)器上對應(yīng)的jar包后,重啟工程會出現(xiàn):NoSuchMethodError這樣的錯。

原因是:基本數(shù)據(jù)類型與包裝類型的解包封包是由編譯器提供的(這在jdk 1.5引入)。void setNumber(int a)與 void setNumber(Integer a); 對于編譯器來說是不同的方法,他們的有著不同的方法簽名。

這里就涉及到Java編輯器對Java方法編譯的問題:在Java中,編輯器會把函數(shù)的參數(shù)列表與函數(shù)名稱一起作為內(nèi)存中標(biāo)記函數(shù)唯一性的標(biāo)識,這也是Java代碼可以重載的原因。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot+Redis海量重復(fù)提交問題解決

    SpringBoot+Redis海量重復(fù)提交問題解決

    在實(shí)際的開發(fā)項(xiàng)目中,一個對外暴露的接口往往會面臨很多次請求,所以本文介紹一下SpringBoot+Redis海量重復(fù)提交問題解決,感興趣的可以了解一下
    2023-12-12
  • springboot注冊攔截器所遇到的問題

    springboot注冊攔截器所遇到的問題

    這篇文章主要介紹了springboot注冊攔截器的方法及所遇到的問題,需要的朋友可以參考下
    2018-07-07
  • Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼

    Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼

    本文給大家分享Java web項(xiàng)目中的強(qiáng)制登錄功能實(shí)現(xiàn)代碼,為了避免直接進(jìn)入項(xiàng)目中存在的頁面,使用filter過濾器,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • SpringBoot個性化啟動Banner設(shè)置方法解析

    SpringBoot個性化啟動Banner設(shè)置方法解析

    這篇文章主要介紹了SpringBoot個性化啟動Banner設(shè)置方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java?Cloneable接口的深拷貝與淺拷貝詳解

    Java?Cloneable接口的深拷貝與淺拷貝詳解

    這篇文章主要為大家詳細(xì)介紹了Java?Cloneable接口的深拷貝與淺拷貝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Mybatis?如何傳入字符串參數(shù),分割并遍歷

    Mybatis?如何傳入字符串參數(shù),分割并遍歷

    這篇文章主要介紹了Mybatis?如何傳入字符串參數(shù),分割并遍歷,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • druid執(zhí)行SQL出現(xiàn)錯誤但不影響返回結(jié)果的問題及解決

    druid執(zhí)行SQL出現(xiàn)錯誤但不影響返回結(jié)果的問題及解決

    這篇文章主要介紹了druid執(zhí)行SQL出現(xiàn)錯誤但不影響返回結(jié)果的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java類的序列化版本唯一標(biāo)識符serialVersionUID使用

    Java類的序列化版本唯一標(biāo)識符serialVersionUID使用

    serialVersionUID是一個類的序列化版本唯一標(biāo)識符,用于確保在反序列化過程中類的實(shí)例與序列化文件中的類版本相匹配,它在版本兼容性和安全性方面起著關(guān)鍵作用
    2025-01-01
  • 利用Java代碼寫一個并行調(diào)用模板

    利用Java代碼寫一個并行調(diào)用模板

    這篇文章主要介紹了利用Java代碼寫一個并行調(diào)用模板,文章基于Java的相關(guān)內(nèi)容展開寫一個并行調(diào)用模板的詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 帶你盤點(diǎn)Java的五種運(yùn)算符

    帶你盤點(diǎn)Java的五種運(yùn)算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運(yùn)算符,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-07-07

最新評論

泸溪县| 休宁县| 诏安县| 清水县| 山东省| 平利县| 胶州市| 金坛市| 青阳县| 轮台县| 囊谦县| 巢湖市| 阿坝县| 万盛区| 新安县| 安康市| 视频| 神农架林区| 武夷山市| 建平县| 徐水县| 新巴尔虎左旗| 郧西县| 宜州市| 平果县| 上栗县| 锦州市| 五家渠市| 盐池县| 濉溪县| 珲春市| 唐海县| 石泉县| 河曲县| 全州县| 油尖旺区| 九龙坡区| 介休市| 紫金县| 蒲城县| 景德镇市|