Jquery数据表的java包装器的设计模式

时间:2013-03-17 01:43:23

标签: java jquery datatables design-patterns

我发现Jquery数据表插件对于简单的只读应用程序非常有用,我希望为用户提供分页,排序和搜索非常大的数据集(使用服务器端处理的数百万行)。

我有一个重用这段代码的系统,但我最终一遍又一遍地做同样的事情。我想编写一个非常通用的api,我基本上只需要配置检索表中使用的数据所需的sql。我正在寻找一个好的设计模式/方法来做到这一点。我已经看过这样的文章http://www.codeproject.com/Articles/359750/jQuery-DataTables-in-Java-Web-Applications并且完全理解了服务器端处理的工作原理(多次在java和asp.net中完成)。对于有人回答你可能需要深入了解服务器端处理如何在java中工作,但这里有一些问题,试图这样做:

  • 我通常会运行三个单独的查询。没有搜索子句的计数,包含子句的计数,查询实际数据。我还没有找到一种有效的方法来同时执行所有3,这样做需要从db返回大量额外数据(即重复计数)。 api需要支持基于这三种不同查询和复杂查询的行为。我通常在一个索引上对number()进行排序,以便对大数据进行相对快速的分页。

* where子句动态更改(用户可以搜索可变数量的行)。

* order by子句因同样的原因而改变。

  • 总体而言,每个案例通常都非常特定于我们需要的数据。是否有一个很好的方法来抽象这个,以便当我想使用插件服务器端时,我可以做最小的工作。

因此,大多数项目的步骤如下: *提取插件发送到服务器的参数(很多时候我自己添加,主要是日期范围) *构建未过滤的计数查询(这很少是动态的)。 *构建过滤后的计数查询(是动态的) *构建数据查询 *构造表的模型对象并将其作为json返回。

使用可变数量的参数设置准备好的语句会出现很多问题。似乎不太可能以一般方式动态生成sql(比如仅基于列名)。我想知道是否有其他人创造了他们正在使用的东西,或者听起来像某个特定模式是适用的。我刚刚想到创建一个可重用的过滤器在java中可能会有所帮助。任何建议将不胜感激。随意与语言无关,因为架构是我想要弄清楚的。

1 个答案:

答案 0 :(得分:1)

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

如果您熟悉C#,可以查看custom binding codeexample of usage

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