在開發中進行遇到值對象和實體間的數據複製.
其中最常用的爲Apache BeanUtilsBean的copyProperties.
本次測試發現該工具可兼容大部分數據格式,但在Java.sql.Date和java.util.Date複製時,原數據如爲空將發送報錯.
通過註冊BeanUtilsBean的轉換器,簡單封裝copyProperties方法.
完成效果: 調用封裝後的工具類方法複製對象屬性時, 遇到Date數據一律給予新對象對應屬性賦值爲null.
最終使用:
Attach attach = new Attach();
attach.setCreatePerson("123");
//attach.setCreateTime(new Date());
EbankApply ebankApply = new EbankApply();
EbankApply ebankApply2 = new EbankApply();
EbankApply ebankApply4 = new EbankApply();
try {
org.apache.commons.beanutils.BeanUtils.copyProperties(ebankApply, attach);//Date 數據爲空時報錯
org.apache.commons.beanutils.PropertyUtils.copyProperties(ebankApply2, attach);//正常
org.springframework.beans.BeanUtils.copyProperties(attach, ebankApply4);//注意參數順序和Apache的相反
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
System.out.println(attach);
System.out.println(ebankApply);
System.out.println(ebankApply2);
System.out.println(ebankApply4);
所以不使用BeanUtil,使用PropertyUtils