BeanUtils.copyProperties復制對象結(jié)果為空的原因分析
BeanUtils.copyProperties復制對象結(jié)果為空原因
細心比對,發(fā)現(xiàn)原來是導錯了包導致的
正確的包
import org.springframework.beans.BeanUtils;
錯誤的包
import org.apache.commons.beanutils.BeanUtils;
兩個類的區(qū)別
- 兩者的copyProperties方法參數(shù)位置不同org.springframework.beans.BeanUtils: copyProperties(sourceDemo, targetDemo)
- org.apache.commons.beanutils.BeanUtils: copyProperties(targetDemo, sourceDemo)
- 要求兩個Bean的屬性名相同,且有對應的setXxx方法和getXxx方法。其實底層原理是使用sourceDemo的getXxx方法和targetDemo的setXxx方法
- sourceDemo有的屬性而targetDemo沒有的屬性,不會封裝到targetDemo對象中;targetDemo有的屬性而sourceDemo沒有的屬性,會封裝到targetDemo中,數(shù)據(jù)為默認值(注意基本類型默認值與引用類型默認值不同)
- 類型轉(zhuǎn)換問題:基本類型與其對應的封裝類型可以相互轉(zhuǎn)換。org.springframework.beans.BeanUtils與org.apache.commons.beanutils.BeanUtils對于String和Date類型轉(zhuǎn)換的情況是不同的
總結(jié):發(fā)現(xiàn)其實只需要將兩個對象換個位置就好了。。。
BeanUtils.copyProperties拷貝沒成功的坑,記錄解決原因
在使用BeanUtils時,會先引用對應的包,但是如果包引用不對的話,那么使用BeanUtils.copyProperties(Object value1, Object value2)進行數(shù)據(jù)拷貝,可能是value1拷貝到value2上;也有可能是value2拷貝到value1上。
具體如下
包org.apache.commons.beanutils.BeanUtils, 則結(jié)果是:
- value2拷貝到value1上,即value2的值會覆蓋到value1上;
包org.springframework.beans.BeanUtils, 則結(jié)果是:
- value1拷貝到value2上,即value1的值會覆蓋到value2上。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java編程數(shù)組中最大子矩陣簡便解法實現(xiàn)代碼
這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡便解法實現(xiàn)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Java使用WeakHashMap實現(xiàn)緩存自動清理
在 Java 中,內(nèi)存管理是一個重要的話題,尤其是在涉及到緩存的實現(xiàn)時,如果緩存項不再被使用,我們希望它們能被自動清理,而不必手動刪除,WeakHashMap 就是 Java 提供的一種用于緩存和內(nèi)存管理的工具,本文將深入探討如何利用 WeakHashMap 來實現(xiàn)緩存自動清理2025-01-01
SpringBoot整合Mail輕松實現(xiàn)郵件自動推送功能
在項目中經(jīng)常會遇到SpringBoot推送消息的業(yè)務,除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就給大家介紹了SpringBoot整合Mail輕松實現(xiàn)郵件自動推送功能,需要的朋友可以參考下2024-12-12
MyBatis動態(tài)SQL實現(xiàn)配置過程解析
這篇文章主要介紹了MyBatis動態(tài)SQL實現(xiàn)配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03

