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

java使用BeanUtils.copyProperties方法對象復(fù)制同名字段類型不同賦值為空問題解決方案

 更新時間:2023年11月17日 16:14:55   作者:滿船清夢壓星河~  
這篇文章主要給大家介紹了關(guān)于java使用BeanUtils.copyProperties方法對象復(fù)制同名字段類型不同賦值為空問題的解決方案,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下

項目場景:

對象之間的復(fù)制,dto對象中字段類型為String,model中字段類型為BigDecimal。使用BeanUtils.copyProperties方法進(jìn)行對象批量復(fù)制。

問題描述

提示:這里描述項目中遇到的問題:

使用Spring 的 BeanUtils.copyProperties 方法發(fā)現(xiàn)dto中的String類型字段無法轉(zhuǎn)換為model中的BigDecimal類型同名字段。

原因分析:

使用Spring 的 BeanUtils.copyProperties 方法不支持不同類型同名字段賦值。

解決方案:

Spring的BeanUtils.copyProperties 方法替換為Apache Commons BeanUtils的copyProperties 方法。

代碼分析:

1、Apache Commons BeanUtils的copyProperties方法 工具類方法

方法使用

進(jìn)入方法

拿到字段的name、value

進(jìn)入copyPropertry方法中有covertForCopy方法,對字段進(jìn)行復(fù)制,并進(jìn)行類型轉(zhuǎn)換。

拿到目標(biāo)對象中的字段類型,并進(jìn)行值轉(zhuǎn)換。

最終完成String類型賦值到BigDecimal類型的同名字段上。

原因:

1、在 Spring 的 BeanUtils.copyProperties 方法中,并沒有內(nèi)置的類型轉(zhuǎn)換功能。該方法主要用于將一個對象的屬性值復(fù)制到另一個對象中,屬性值的復(fù)制是按照字段名進(jìn)行匹配的。

如果源對象的字段類型和目標(biāo)對象的字段類型不匹配,Spring 的 BeanUtils.copyProperties 方法會直接復(fù)制字段值,而不會進(jìn)行類型轉(zhuǎn)換。這意味著如果源對象的字段類型是 String,而目標(biāo)對象的字段類型是 BigDecimal,則不會自動將字符串轉(zhuǎn)換為 BigDecimal。

2、Apache Commons BeanUtils 的 copyProperties 方法在復(fù)制屬性時會根據(jù)源對象字段和目標(biāo)對象字段的類型進(jìn)行相應(yīng)的轉(zhuǎn)換。
當(dāng)源對象和目標(biāo)對象的相應(yīng)字段類型不一致時,BeanUtils 會嘗試進(jìn)行類型轉(zhuǎn)換。它使用 Java 內(nèi)置的類型轉(zhuǎn)換機(jī)制和一些自定義的轉(zhuǎn)換規(guī)則來處理不同類型之間的轉(zhuǎn)換。

在進(jìn)行類型轉(zhuǎn)換時,BeanUtils 會盡可能地使用內(nèi)置的轉(zhuǎn)換規(guī)則,例如使用適當(dāng)?shù)臉?gòu)造函數(shù)或轉(zhuǎn)換方法。如果默認(rèn)規(guī)則無法進(jìn)行轉(zhuǎn)換,則可以通過注冊自定義的轉(zhuǎn)換器來處理特定類型之間的轉(zhuǎn)換。

總結(jié)

到此這篇關(guān)于java使用BeanUtils.copyProperties方法對象復(fù)制同名字段類型不同賦值為空問題解決方案的文章就介紹到這了,更多相關(guān)BeanUtils.copyProperties不支持不同類型同名字段賦值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java根據(jù)Request獲取客戶端IP

    Java根據(jù)Request獲取客戶端IP

    這篇文章主要介紹了Java根據(jù)Request獲取客戶端IP的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • MyBatis-Plus多表聯(lián)查(動態(tài)查詢)的項目實踐

    MyBatis-Plus多表聯(lián)查(動態(tài)查詢)的項目實踐

    本文主要介紹了MyBatis-Plus多表聯(lián)查(動態(tài)查詢)的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 詳解Java編程中if...else語句的嵌套寫法

    詳解Java編程中if...else語句的嵌套寫法

    這篇文章主要介紹了Java編程中if...else語句的嵌套寫法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • SpringBoot使用redis實現(xiàn)session共享功能

    SpringBoot使用redis實現(xiàn)session共享功能

    這篇文章主要介紹了pringboot項目使用redis實現(xiàn)session共享,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • Java中==符號與equals()的使用詳解(測試兩個變量是否相等)

    Java中==符號與equals()的使用詳解(測試兩個變量是否相等)

    下面小編就為大家?guī)硪黄狫ava中==符號與equals()的使用詳解(測試兩個變量是否相等)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 在Spring項目開發(fā)中Domain層的使用解析

    在Spring項目開發(fā)中Domain層的使用解析

    Domain是領(lǐng)域?qū)拥暮诵臄?shù)據(jù)載體,主要在領(lǐng)域?qū)觾?nèi)部及與Service層之間傳遞,用于封裝核心業(yè)務(wù)概念和規(guī)則,這篇文章給大家介紹在Spring項目開發(fā)中,Domain層的作用詳解,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • 深入SQLite多線程的使用總結(jié)詳解

    深入SQLite多線程的使用總結(jié)詳解

    本篇文章是對SQLite多線程的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • springboot?log4j2日志框架整合與使用過程解析

    springboot?log4j2日志框架整合與使用過程解析

    這篇文章主要介紹了springboot?log4j2日志框架整合與使用,包括引入maven依賴和添加配置文件log4j2-spring.xml的相關(guān)知識,需要的朋友可以參考下
    2022-05-05
  • Mybatis Generator具體使用小技巧

    Mybatis Generator具體使用小技巧

    本文主要介紹了Mybatis Generator具體使用小技巧,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 基于logback實現(xiàn)純java版本的SDK組件

    基于logback實現(xiàn)純java版本的SDK組件

    這篇文章主要介紹了基于logback實現(xiàn)純java版本的SDK組件,在項目開發(fā)過程中通常會使用logback作為日志記錄的依賴工具,使用方式是引入logback相關(guān)jar包,然后配置logback.xml配置文件的方式來實現(xiàn),需要的朋友可以參考下
    2023-11-11

最新評論

德阳市| 东乡| 九龙城区| 如皋市| 昌邑市| 大冶市| 平原县| 霍林郭勒市| 姚安县| 简阳市| 正阳县| 兴宁市| 双流县| 威海市| 田东县| 岳池县| 宝鸡市| 清丰县| 临沭县| 清河县| 南和县| 博白县| 开封县| 宿迁市| 明水县| 静宁县| 永定县| 南华县| 苏州市| 北碚区| 通化县| 玛曲县| 蕉岭县| 蓝田县| 万荣县| 和田市| 靖西县| 万全县| 璧山县| 乐都县| 德惠市|