天天看点

cms查询系统(三)查询demo体验安装相应的jar包到maven仓库搭建查询demo多样化的实体查询API

有2个项目的jar包需要安装,分别是:

search-sqlparams-1.3.0.jar 主要用于查询参数的解析

search-core-1.3.0.jar 整体的查询流程体系,需要使用上述参数解析包

上述两个项目地址分别如下:

<a href="https://git.oschina.net/pingpangkuangmo/search-sqlparams">search-sqlparams</a>

<a href="https://git.oschina.net/pingpangkuangmo/search-core">search-core</a>

以search-sqlparams-1.3.0.jar为例来说下安装步骤:

第一步:fork search-sqlparams 项目(这两个项目都是maven环境),把项目源代码拉取到本地

第二步:在该项目的目录下,执行 mvn install 命令,就会将该项目编译并且安装jar包到maven仓库中

第三步:在该项目的目录下,执行 mvn source:jar install 命令,就会将该项目的源码包安装到maven仓库中

对于search-core项目同理,执行上述步骤,search-core一定要在search-sqlparams之后执行

这样操作,主要是方便自己去查看和修改源码

如果不想关心项目的源码,想直接获取jar包和源码包,下载地址如下:

<a href="https://git.oschina.net/pingpangkuangmo/blog/tree/master/2015-4/%e9%99%84%e4%bb%b6">search-sqlparams-1.3.0.jar和search-core-1.3.0.jar</a>

下载查询demo工程,使用ide导入demo工程。工程地址如下: 

<a href="https://git.oschina.net/pingpangkuangmo/search-demo">search-demo工程</a>

第一步:准备数据库和数据

demo项目中的类路径下,有一个search.sql文件,连上mysql数据库执行该sql文件,或者直接拷贝文件里面的内容,到mysql客户端直接执行这些内容。会创建一个search数据库,里面有a、b、c、d四张表和对应的数据

第二步:修改项目中jdbc.properties的配置文件,改成你实际的配置

cms查询系统(三)查询demo体验安装相应的jar包到maven仓库搭建查询demo多样化的实体查询API

如果直接使用的是jar包,没有安装到maven仓库,则需要去掉demo工程中的以下依赖

然后将jar包直接放置到demo工程的classpath路径下

对实体提供多样化的查询api,是有一定的使用场景的,它适用于那些简单的查询实体间父子关系的场景。

主要功能:

1 对select语句查询出的平铺的结果展示进行聚合,使其具有父子关系

2 对select语句查询出的结果进行格式化,如true、false改为是、否

3 对于查询条件可以随意增添,支持类似mongodb的and or

目前数据库中有4张实体表,分别是a、b、c、d,他们的关系是:

a:b=1:n

b:c=1:n

c:d=1:n

字段内容分别如下:

分成2部分来说,查询实体间的关系和查询条件,以下请求都是post请求,请求体为json形式的字符串,同时content-type类型为application/json。返回的数据都是list类型的,所以下面就只显示一个数据的格式

1 查询b实体的内容

查询返回的数据格式如下:

2 查询b实体的内容,同时想知道其父实体a的内容

查询返回的数据格式如下,b实体中有一个a属性,属性值为a实体的内容:

其中tablespath也可以不写,使用默认配置,但是b left join a和 b join a的结果是不一样的,所以用户可以根据需求来自行配置。支持join 、left join 、right join

3 查询b实体的内容,同时想知道它所包含的所有c实体

查询返回的数据格式如下,b实体中有一个cs属性,该属性是c实体的一个集合

tablespath同上。

4 查询b实体的内容,同时想知道它的父实体a和它所包含的所有的c实体的内容

返回的数据格式如下,b实体有一个a属性,属性类型为map,值为a实体的内容;b实体有一个cs属性,属性类型为list,值为c实体的集合

其中tablespath可以随意写,只要真实逻辑正确,不在乎顺序,如

5 查询b实体的内容,同时想知道它的父实体a和它所包含的所有的c实体的内容,以及它所包含的所有d实体的内容

同理,在上一个格式的基础上,添加了一个ds的属性,该属性是d实体的集合,下面数据太长就省去了集合中的一部分实体

1 最简单的查询条件

查询条件为b.id=1。下面的查询就只写params中的内容

2 一般查询

查询条件为b.id&gt;1

3 in not in 查询

4 时间查询

5 like 查询

其中%用法和数据库保持一致

6 and 查询

表示要查询的条件为b.name like a 同时a.id=1。

这时候tablespath为b和a实体间的关系,params中的查询条件就可以随意的指定a、b中要查询的字段。

查询条件之间默认是and的关系

7 or 查询

上述表示的查询条件为 b.id&lt;2 or b.id&gt;3

查询条件之间如果想使用or的关系,则使用$or将他们包裹起来。

8 and or 混合查询

上述表示的查询条件为:

两个b.create_time条件构成and关系,然后再与b.id条件构成or的关系,再与b.name条件构成and关系

先有一个基本的了解与认识,之后再详细说明细节