0

我发现 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 有帮助。任何建议将不胜感激。随意成为语言不可知论者,因为架构是我想要弄清楚的。

4

1 回答 1

1

我们有基本搜索条件,其中与 DataTables 相关的所有请求参数都映射到类属性(字段)和自定义搜索条件类,该类扩展基本并包含特定于业务逻辑字段的 sutom 搜索。同样在服务器端,我们有将自定义搜索条件作为参数并对数据库进行查询的存储库类。

如果您熟悉 C#,您可以查看自定义绑定代码使用示例

您也可以在 Java 代码中进行此类自定义绑定。

于 2013-03-18T09:23:07.427 回答