zl程序教程

您现在的位置是:首页 >  系统

当前栏目

cms查询系统(三)查询demo体验

系统 查询 体验 Demo cms
2023-09-14 08:59:44 时间

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

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


第三步:在tomcat中运行该项目(部署路径设置为/),访问http://localhost:8080/ 如下 hello world 形式,则表示项目搭建成功:search-demo首页


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

 !-- search -- 

 dependency 

 groupId com.dboper /groupId 

 artifactId search-core /artifactId 

 version 1.3.0 /version 

 /dependency 

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

多样化的实体查询API

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

主要功能:


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

查询实体间的关系

其中a@mapa分成三部分a @map a,第一部分返回格式中的属性名称,第二部分表示该属性是一个map形式,第三部分表示实体,综合起来就是实体a要作为实体b的一个属性,并且属性名称为a。

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


其中cs@listc分成三部分 cs @list c,第一部分cs表示返回数据格式中的属性,第二部分表示该属性是一个集合形式,第三部分表示c实体,综合起来就是c实体要作为b实体cs属性的一个成员。

tablesPath同上。


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

{

 "id": 1,

 "createTime": 1427817600000,

 "aId": "1",

 "a": {

 "id": 1,

 "createTime": 1427817600000,

 "name": "a1"

 "name": "b1a1",

 "cs": [

 "id": 1,

 "createTime": 1428076800000,

 "name": "c1b1a1",

 "bId": "1"

 "id": 2,

 "createTime": 1428076800000,

 "name": "c2b1a1",

 "bId": "1"

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

a right join b left join c

b left join c left join a

c right join a right join b 就不行,不是正常逻辑,

因为 c right join a 没有直接的关系(即使有的情况是可以查出来的,有的情况也是查不出来的,最好不要这样使用)


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

{

 "entityColumns":["b","a@mapa","cs@listc","ds@listd"],

 "tablesPath":"b left join a left join c left join d"

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

{

 "id": 1,

 "createTime": 1427817600000,

 "aId": "1",

 "a": {

 "id": 1,

 "createTime": 1427817600000,

 "name": "a1"

 "name": "b1a1",

 "ds": [

 "id": 4,

 "createTime": 1428768000000,

 "name": "d2c2b1a1",

 "cId": "2"

 "cs": [

 "id": 2,

 "createTime": 1428076800000,

 "name": "c2b1a1",

 "bId": "1"


上面说完了查询实体间的关系,现在来看看在上面的基础上如何添加查询条件。上一部分内容就是整个查询体系search-core项目所做的事情(还有很多其他事情,之后再详谈),对于查询条件部分则是search-sqlparams项目的主要功能,可以参见cms查询系统(二)json形式参数的设计与解析


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

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

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


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

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


上述表示的查询条件为:

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


开源网站流量统计系统Piwik源码分析——参数统计(一) Piwik现已改名为Matomo,这是一套国外著名的开源网站统计系统,类似于百度统计、Google Analytics等系统。最大的区别就是可以看到其中的源码,这正合我意。因为我一直对统计的系统很好奇,很想知道里面的运行原理是怎么样的,碰巧了解到有这么一个系统,因此马上尝试了一下。国内关于该系统的相关资料比较匮乏,大多是分享怎么安装的,并没有找到有关源码分析的文章。下面先对其做个初步的分析,后面会越来越详细,本人目前的职位是前端,因此会先分析脚本代码,而后再分析后台代码。
MyCms 自媒体 CMS v3.0,资源推送优化,新增免费模板 MyCms 是一款基于Laravel开发的开源免费的自媒体博客CMS系统,助力开发者知识技能变现。MyCms 基于Apache2.0开源协议发布,免费且不限制商业使用,欢迎持续关注我们。
[自制工具]批量后台更新统计信息 Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。
网站维护利器:PageAdmin Cms日志功能使用说明 很多时候大型网站页面数很多,我们没有办法一个一个检测每个页面是否能正常访问,经常都是用户反馈了某个页面不能访问后,网站维护人员才去处理问题,如果处理不及时会导致潜在用户流失,如果正好属于有排名的优化页面,严重的就导致页面搜索引擎排名丢失。
Fundebug支付宝小程序BUG监控插件更新至0.2.0,新增test()方法,报错增加Page数据 摘要: 0.2.0新增fundebug.test()方法,同时报错增加了Page数据。 Fundebug提供专业支付宝小程序BUG监控服务,可以第一时间为您捕获生存环境中小程序的异常、错误或者BUG,及时给开发者发送报警,帮助您快速修复BUG。