2014-10-20 96 views
0

在我們的Spring項目中,我們有許多控制器接收客戶端輸入(過濾器),這將創建來自數據庫的動態查詢並將結果集返回給客戶端。通用導出到Java對象的Excel

例如:

public List<UserResultDTO> getUsers(Filter filter); 
public List<TransactionResultDTO> getTransactions(Filter filter); 
public List<ProfileResultDTO> getProfile(Filter filter); 

我們的新requirmemnt很簡單: 「請允許這些結果列表到Excel導出文件」

導出到Excel文件的整體思路是已經照顧好了。 (我們有一個非常強大的Excel提供程序)

所以我們的目標基本上是創建一個非常通用的函數\服務,將採取一個列表,並將能夠以通用的方式導出它。

任何想法這種任務的最佳做法是什麼?

的領悟:

1)創建將包含每個模型對象的配置和列名的枚舉(似乎很冗餘和maintanance地獄)

2)使用反射可能?甚至可能使用註釋來填充Excel列名

3)其他?

謝謝!

回答

1

當然不是枚舉;這會增加人爲的相互依賴性:如果某些獨立的DTO發生更改,則枚舉會被訪問幾次。

存在BeanInfo API,作爲Java類存儲的元信息平行於DTO類。這特別適用於這種情況。但也許矯枉過正。

所以它可能歸結爲您自己的適配器,使用反射給出合理的輸出。並使用自動檢測改進聲明方式:

  • (不太好)的註釋中的DTO(如何DTO的發展?)
  • XML或使用的.properties完整的類名稱;每類一個XML
+0

感謝您的回覆Joop!我們有一個小規模項目,看起來像BeanInfo API正是你所說的:一個過度殺傷。你能否詳細說明另一種方法?順便說一下,DTO由服務器團隊(我們的團隊,5位開發人員)開發。 – Urbanleg 2014-10-20 12:49:28

+0

我想列名和格式是唯一的要點。如果考慮國際化,那麼對於從變量名稱/ SQL名稱到可本地化列名稱的映射,.properties將會很好。 – 2014-10-20 12:58:08