最近做的項目中,經常會遇到用視圖來操作資料庫的,但是頁面需要的則是某個實體對象,在controller層查出list<view> 還要把将view對象轉化成entity對象。需要寫一大堆的get和set方法,而且如果實體增删字段的話,還需要把轉化代碼再修改一下,讓人頭疼。
當我需要操作一個實體對象完成兩件不同的事情,這2個方法中會修改實體對象中的屬性,第一個方法調用後,再調用第二個方法時,會受影響。為了保證不受影響,必須copy一份屬性值一模一樣的實體。這時候就需要一個工具類來完成了。
本着磨刀不誤砍柴工的原則,抄起鍵盤,随手寫了一個轉換對象的工具類。要求2個對象的字段基本上一緻。基本原理就是通過反射,擷取set方法,調用源對象的get方法擷取源對象的值,再通過目标對象的set方法,将值寫入目标對象。具體代碼如下:
提供了3個方法,适用範圍都已經在方法上進行了标注,基本上可以滿足需要。
當然,上面提到的問題,并不一定非得用反射來擷取,也可以借助json來實作。先将源對象轉化為json,然後再将json轉化為目标對象。當然要注重解決一下字段不一緻時的轉化問題。