cms查询系统(三)查询demo体验
第一步:准备数据库和数据
demo项目中的类路径下,有一个search.sql文件,连上mysql数据库执行该sql文件,或者直接拷贝文件里面的内容,到mysql客户端直接执行这些内容。会创建一个search数据库,里面有a、b、c、d四张表和对应的数据
第三步:在tomcat中运行该项目(部署路径设置为/),访问http://localhost:8080/ 如下 hello world 形式,则表示项目搭建成功:
如果直接使用的是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。
相关文章
- [Unity3D]UI方案及制作细节(NGUI/EZGUI/原生UI系统)
- 《转载》WIN10 64位系统 32位Python2.7 PIL安装
- 【解决】Ubuntu下使用SSH连接CentOS系统很慢
- mysql查询当前系统时间
- Oracle常用系统查询SQL
- CentOS7 安装redis-5.0.5/注册为系统服务及单机启动多个redis服务
- 《安富莱嵌入式周报》第301期:ThreadX老大离开微软推出PX5 RTOS第5代系统,支持回流焊的自焊接PCB板设计,单色屏实现多级灰度播放视频效果
- 【BSP视频教程】STM32H7视频教程第9期:STM32H7的GPIO专题,通过驱动源码,参考手册,数据手册应用笔记系统学习GPIO知识点(2022-03-06)
- Atitit.atiagent agent分销系统 代理系统 设计文档
- 我用开天平台做了一个城市防疫政策查询系统,你不试试?
- 第一次玩Linux系统 并执行一条c语言 简单粗暴
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- HTML+CSS纯干货就业前基础到精通系统学习2016/9/3
- android:sharedUserId 获取系统权限
- Win11系统桌面状态栏电池图标不显示怎么办?
- 嵌入式系统和物联网中的软件安全
- 基于Java+SpringBoot+Vue+Uniapp前后端分离健身预约系统设计与实现
- 综合案例:利用ansible常用七种模块实现备份系统的部署及告警(十一)