我处于反模式,我想出去

2022-09-03 16:03:35

我正在开发一个java webapp,使用jsp/jquery/ejb/jboss。

我有一个Web表单,使用户能够从数据库中选择100个字段的任意组合(全部来自不同的不相关的表/对象)。然后,这些字段通过 java servlet 输出到 Excel 电子表格中。执行始终返回所有 100 个字段的存储过程。

Web 表单在传输对象 (TO) 中设置 100 个布尔值,以确定是否应显示数据。然后引用此 TO 以生成电子表格的标题行,以及迭代的数据库中的每一行。

一切都很好,但感觉不对劲。我想不出一种可行的方法,不引用100个布尔值(N + 1次)来确定是否应该将字段包含在输出的电子表格中。例如,当我说可行时,我的意思是我不想重写存储过程或创建100个不同的存储过程。


答案 1

我们的解决方案是在类似情况下创建动态传输对象。基本上,它是一个而不是一个POJO,它有许多getter和setters。Map

填充和读取此传输对象的代码是简单的迭代。


答案 2

您不能在应用程序中动态生成选择的 SQL 字符串,然后执行该 SQL 语句,而不是使用存储过程。因此,您只需要引用一次布尔值,并且只需返回所需的列。


推荐