2014-10-20 100 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