我发现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很有帮助。任何建议将不胜感激。随便使用与语言无关的语言,因为我正在努力弄清该体系结构。
最佳答案
我们具有基本搜索条件,其中所有与DataTables相关的请求参数都映射到类属性(字段)上,而自定义搜索条件类扩展了基础并包含特定于业务逻辑字段的Sutom搜索。同样在服务器端,我们有一个存储库类,它以自定义搜索条件作为参数并查询数据库。
如果您熟悉C#,则可以签出custom binding code和example of usage。
您也可以在Java代码中进行这种自定义绑定。
关于java - Jquery数据表的Java包装器的设计模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15456726/