我发现 Jquery 数据表插件对于简单的只读应用程序非常有用,我希望在这些应用程序中为用户提供非常大的数据集(数百万行使用服务器端处理)的分页、排序和搜索。
我有一个重用此代码的系统,但我最终一遍又一遍地做同样的事情。我想写一个非常通用的api,我基本上只需要配置检索表中使用的数据所需的sql。我正在寻找一个好的设计模式/方法来做到这一点。我看过这样的文章http://www.codeproject.com/Articles/359750/jQuery-DataTables-in-Java-Web-Applications并且完全了解服务器端处理的工作原理(已经在 java 和asp.net 多次)。对于有人回答,您可能需要深入了解服务器端处理在 java 中的工作方式,但这里有一些尝试这样做的问题:
- 我通常运行三个单独的查询。不带搜索子句的计数,包含子句的计数,实际数据的查询。我还没有找到一种有效的方法来一次完成所有 3 项操作,这样做需要从 db 返回大量额外数据(即一遍又一遍地计数)。api需要支持基于这三个不同查询和复杂查询的行为。我通常将行号()放在索引上,以便在大数据时分页相对较快。
*where 子句动态变化(用户可以搜索可变数量的行)。
*order by 子句出于同样的原因而更改。
- 总体而言,每个案例通常都非常特定于我们需要的数据。有没有一种抽象的好方法,以便在我想使用插件服务器端时可以做最少的工作。
因此,大多数项目中的步骤如下: *提取插件发送到服务器的参数(很多时候我自己的被添加,主要是日期范围) *构建未过滤的计数查询(这很少是动态的)。*构建过滤计数查询(动态) *构建数据查询 *构建表的模型对象并将其作为json返回。
使用可变数量的参数设置准备好的语句时会出现很多问题。以一般方式(比如仅基于列名)动态生成 sql 似乎不太可能。我想知道是否其他人为此创建了一些他们正在使用的东西,或者听起来是否有特定的模式适用。我刚刚想到创建一个可重用的过滤器可能对 java 有帮助。任何建议将不胜感激。随意成为语言不可知论者,因为架构是我想要弄清楚的。