在專案中碰到類似的情景,比較有意思,記錄一下:
我手上有乙個集合,集合中有乙個實體類的欄位名稱和他的值,但是都是string型別的。需要將這個集合轉換為這個實體類。
過程問題如下:
1.我手上只有集合如何判定他是哪個實體類?
2.集合中key和value都是string型別,如何轉換為對應的資料型別
3.如何把資料轉換為那個實體類
我這裡只說原理:
首先,這種情況考慮到底就是反射,第乙個問題,我做了乙份配置檔案,在前置處理中,將根據對應的資料,從載入的配置檔案中獲取pojoname,然後就是我們常用的object pojoclass = classutils.getclass(pojoname).newinstance(),這種反射獲取實體類;
然後過呢,就根據獲取的pojo類,建立乙個屬性名和屬性所屬型別的map;
再然後呢,拼接方法,set+屬性名稱就是我們的set方法了,value呢,就需要map中的屬性名和屬性型別同我們的集合做乙個處理的工具類,返回對應的的值,使用object
最後,methodutils.invokemethod(pojoclass,methodname,methodvalue),這個pojoclass就是我們要獲取的物件了。
注意,如果集合中有無效資料,可以考慮加乙個try,catch,捕獲異常後打個log,意思一下,說明欄位不處理。
xsd轉實體類
話說vs自帶的工具,可以將xsd或者xml格式的檔案轉成實體類,大概格式如下 使用vs2005工具xsd.exe sdk v2.0 bin xsd.exe 自動生成實體類 xsd c namespace mycompany language cs temp1.xsd 也可以生成dataset型別的類...
XML轉實體類工具
這裡使用到了jox依賴 com.wutka jox1.16 工具類 project gsj qcdzh company jit northeast r d description todo author dongwei date 2019年1月17日 上午9 47 33 version v1.0 p...
MySQL實體類轉SQL指令碼
attributeusage attributetargets.property,allowmultiple false,inherited false 用於給擴充套件類的屬性增加特性標識 如果實體類屬性有此標識,則不參與指令碼運算 public class i tendfieldattribute...