天天看點

BeanUtils.copyProperties源碼的修改

昨天随便說一下pojo和vo和dto的關系給大家2個需求 昨天的部落格的位址 https://mp.weixin.qq.com/s?__biz=MzA4MTAwMzA1Mw==&mid=2247484844&idx=1&sn=b950db1607efa078ccc41af61d885dc4&chksm=9f9ad2eea8ed5bf800d2a6d56eddebb33487f1db0741b6a71c0ea262db79480f7fbcb8119ebb&token=722122288&lang=zh_CN#rd 需求

先解決第一個需求

求1:如果B中某字段有值(不為null),則該字段不複制; 也就是B中該字段沒值時,才進行複制,适合于對B進行補充值的情況。

解決方案

這裡我使用的是自定義注解當自定義注解放在那個字段上面就不進行複制 重寫這個複制的源碼

B

A

main

可以看到a向b複制 字段departmentname的值在b是3333333333333333333 a的值是2222222在b上加上自定義注解

重寫方法

核心是

執行看效果

BeanUtils.copyProperties源碼的修改

看到裡面的值還是沒有改變 解決

需求2:如果A中某字段沒值(為null),則該字段不複制 也就是不要把null複制到B當中

上面還是可以用

核心

看結果

BeanUtils.copyProperties源碼的修改

看到

日志

希望可以給大家帶來看源碼的能力,和學習這個方法的源碼是幹什麼的,怎麼進行根據需求去改造這個源碼,謝謝你的支援,這個問題,百度上也有,但是寫的,看不懂,這個寫的比較簡單,希望給你帶來學習的意義,去了解複制的原理

對這個需求有問題可以加我微信