jxTMS设计思想之数据查询

110 篇文章 0 订阅
44 篇文章 0 订阅

jxTMS是以低成本快速定制为核心诉求的、SaaS模式的二次开发平台:jxTMS简介
本文是讲述jxTMS平台中数据访问部分是如何设计的,整个系列请访问:jxTMS设计思想

数据查询

数据库的增删改查操作中最特殊的就是查询操作了。因为查询有几个特殊的地方:

  • 条件查询,可以说,任何查询都是带条件的,没条件的查询没有意义,而和update中根据主键值就可以确定条件不同,查询的条件是根据业务需要动态的设置的

  • 多表联合查询,增删改都是对单表的操作,而查询大多数都需要对多个数据表进行联合查询

  • 查询出来的数据可能太多,所以需要分页,可能需要排序、可能需要分组等等

  • 由于数据库中的数据量可能会太大,为了压缩存储的压力,所以经常会用带语义的数字来代替文字描述,但这样的数字如果直接显示给用户,显然用户会看不懂。所以还需要在数据查询出来后进行语义转换或语义补充

所以和增删改直接拼接相应的SQL语句不同,jxTMS针对查询设计了一个SelectSql的类,专门用来组装select语句。jxTMS将之称为一个数据源

SelectSql主要针对多表联合查询和条件查询,支持设置多个数据表、设置多个条件。其支持三种条件:

  • 不同表中的列比较【当然,一般都是相等】,这主要是用于多表查询时做表间连接

  • 某表某列和某数值的比较,该数值在定义查询条件时静态指定

  • 某表某列和某变量的比较,变量值在执行查询时动态指定

SelectSql有一个概念:条件链,用以简便的区分出or和and连接:同一个条件链是与【and】连接;不同的条件链之间是或【or】连接。默认是对零号链进行设置,也就是默认是and连接。

在需要执行时,需要两步来处置:

  • 将指定的SelectSql克隆出一个新的SelectSql,用来根据业务需要增加临时的额外的查询条件,如【我的任务】在设计时想列表所有指派给自己执行的任务,但可以动态的增加条件查询某个时间段的任务、名字中含有某个关键字的任务等等

  • 将设置好查询条件的SelectSql创建一个执行体,然后如果在创建SelectSql时使用了需在执行时动态指定值的变量,则先要给这些变量赋值;之后如有必要则设置limit和offset【分页查询】;然后才开始执行实际的查询

查询的执行过程是:

  • 根据SelectSql设置的信息生成一个select语句

  • 用此select语句从数据库中查询出一个结果集

  • 根据指定的结果类型,将结果集要么转换为数据对象的队列或一个json数组

针对列表查询的优化

大多数的业务活动,都包括两个入口:创建、列表查询。

所以jxTMS针对列表查询做了特别优化,使得可以非常简便的开发一个带条件查询的、分页的列表查询功能。

完成一个完整的列表查询功能,所需要的全部工作包括:

  • 定义一个带查询条件界面、分页的数据表

  • 定义一个数据源,以执行数据库查询

  • 根据用户输入的查询条件,对数据源添加查询条件

  • 如果数据源带有条件变量,则在投入执行前对相应的变量赋值

  • 如需分页,则先查询出符合条件的总行数发送到前端初始化分页控件

  • 执行查询

  • 如有需要,则逐行/逐对象来执行语义转换或语义补充

低成本定制为核心述求的jxTMS,所以针对上述的列表查询工作流做了相应的优化。使得开发者可以非常简单的按需开发出自己的列表查询功能。

列表查询的完整工作流的说明请参考:jxTMS在线编程手册之列表查询

目前jxTMS已经开放个人注册试用,欢迎大家注册试用:

注册到jxTMS

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本功能:

jxTMS的HelloWorld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值