一种基于JSON语句操作数据库的方法和系统与流程

文档序号:11677548阅读:148来源:国知局
本发明涉及数据库
技术领域
:,尤其涉及一种基于json语句操作数据库的方法和系统。
背景技术
::在软件开发的数据库操作过程中,软件开发人员需要频繁的进行sql语句编写,但手动编写sql语句存在效率低,出错率高,调试过程费时费力等缺点。为了改善这种情况,目前市面上存在一些相关的软件,例如:navicat等,但这类软件依旧停留在用户层面,通过与用户对话的方式,生成想要的sql语句。然后开发人员可将生成好的sql复制后粘贴到具体的程序中,再进行条件的赋值等操作。本专利提供的方法,完全脱离的人工干预,与主体程序同步运行,主体程序直接调用sql生成模块,随时使用,随时生成。整个过程开发人员无需参与。众所周知,平均的代码出错数量、bug的产生的数量,与代码的总行数有直接的关系,如何减小了整体开发的代码编写量,在理想情况下能实现查询sql语句的零编写成为亟需解决的一个技术问题。技术实现要素:本发明的实施例提供了一种基于json语句操作数据库的方法和系统。本发明提供了如下方案:根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式;根据采用json描述规则描述的数据请求以及所述表关系的表达式,创建查询sql语句的表关系的筛查条件的表达式;根据所述表关系的表达式和筛查条件的表达式生成sql语句操作数据库。根据本发明的上述方法,所述根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式,包括:根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。根据本发明的上述方法,包括:当根据所述数据请求遍历所述数据库表关系图,取得多个数据库表对象时,且,存在有两个没有直接关系数据库表对象,则根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图寻找对两个数据库表对象之间的间接关系,根据所述间接关系获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。根据本发明的上述方法,所述根据采用json描述规则描述的数据请求以及所述表关系的表达式,创建查询sql语句的表关系的筛查条件的表达式,包括:根据采用json描述规则描述的数据请求提取所述数据请求的标签项对应的筛查条件;根据所述表关系的表达式提取所述数据请求的标签项所匹配的表对象;根据所述筛查条件和所述标签项所匹配的表对象创建查询sql语句的表关系的筛查条件的表达式。根据本发明的上述方法,包括:预先建立json与数据库表对应表达规则作为json描述规则,采用所述描述规则描述数据库表关系图,以及采用所述描述规则描述数据请求。根据本发明的另一方面,还提供一种基于json语句操作数据库的系统,包括:第一描述模块:其用于根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式;第二描述模块:其用于根据采用json描述规则描述的数据请求以及所述表关系的表达式,创建查询sql语句的表关系的筛查条件的表达式;操作模块:其用于根据所述表关系的表达式和筛查条件的表达式生成sql语句操作数据库。根据本发明的另一方面,所述第一描述模块,具体用于:根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。根据本发明的另一方面,所述第一描述模块,还具体用于:当根据所述数据请求遍历所述数据库表关系图,取得多个数据库表对象时,且,存在有两个没有直接关系数据库表对象,则根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图寻找对两个数据库表对象之间的间接关系,根据所述间接关系获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。根据本发明的另一方面,所述第二描述模块,还具体用于:根据采用json描述规则描述的数据请求提取所述数据请求的标签项对应的筛查条件;根据所述表关系的表达式提取所述数据请求的标签项所匹配的表对象;根据所述筛查条件和所述标签项所匹配的表对象创建查询sql语句的表关系的筛查条件的表达式。根据本发明的另一方面,还包括:建立模块:其用于:预先建立json与数据库表对应表达规则作为json描述规则,采用所述描述规则描述数据库表关系图,以及采用所述描述规则描述数据请求。由上述本发明的实施例提供的技术方案可以看出,本发明实施例根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式;根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的筛查条件的表达式;根据所述表关系的表达式和筛查条件的表达式生成sql语句操作数据库。此方来生成查询sql语句的做法,是一种一劳永逸的方式,在理想情况下查询sql语句的编写过程实现了零代码。能够极大的改善业务逻辑复杂的基于数据库项目的开发工作。提高工作效率和产品质量。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例一提供的一种基于json语句操作数据库的方法的处理流程图;图2为本发明实施例一提供的示例的数据库表关系图;图3为本发明实施例二提供的一种基于json语句操作数据库的系统的系统模块图。具体实施方式为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。实施例一本实施例中需要预先建立json(javascriptobjectnotation)与数据库表对应表达规则作为json描述规则,采用所述描述规则描述所述数据库表关系图,以及采用所述描述规则描述数据请求;数据库表关系图直接基于数据库获取,或者基于其他第三方工具也可获取。本实施例中,给出一种采用所述描述规则描述所述数据库表关系图,具体如下所示:本实施例中所定义的描述规则可以理解为采用json中定义的结构与数据库表之间建立的一种表达方式。图2给出一种示例的数据库表关系图,对于图2的数据库表关系图,预先建立json与数据库表对应描述规则,采用所述描述规则描述所述数据库表关系图,具体地可使用如下的json结构:{"tablelist":[{"talbename":"table2","primarykey":"id","foreignkey":[{"foreignkey":"fk_id1","linktotable":"table1"},{"其他的外键":"..."}],"field":["字段1","字段2","字段3"]},{"其他的表":"..."}]}本实施例中,给出如下示例采用所述描述规则描述数据请求,具体如下:{"condition":[["table1.name","=","张三"],["table2.age",">","18"]],"result":["table1.name","table2.age"]}本实施例提供了一种基于json语句操作数据库的方法的处理流程如图1所示,本实施例中,其处理步骤如下:步骤11、根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式;具体地,本实施例中,根据所述数据请求遍历所述数据库表关系图仍然是基于上述预先json与数据库表对应描述规则所描述的数据库表关系图。根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。例如上述采用本实施的描述规则描述数据请求中,"result":["table1.name","table2.age"]那么name和age就是本次数据请求的标签项,再按照提取的标签项遍历所述数据库表关系图,对标签项匹配表对象,根据所述表对象创建查询sql语句的表关系的表达式。表关系是指涉及到本次数据请求的标签项的两个表之间的关系,接着上述的实施,假设在一个统计学生信息的数据库中,table1作为班级信息表用于记录班级信息,在班级信息表中涉及到学生的name信息,table2作为学生信息表用于记录学生信息,在学生信息表中涉及到学生的age信息,此时,遍历所述数据库表关系图,对标签项匹配表对象,table1和table2涉及到本次数据请求的标签项name和age,,那么table1即为name标签项的表对象,table2即为age标签项的表对象,本实施例中,创建表关系的表达式为:学生信息表.链接班级=班级信息表.主键;具体到本实施例中,由于上述描述规则中定义为:"primarykey":"id","foreignkey":"fk_id1",根据所述表对象创建查询sql语句的表关系的表达式可表示为:table2.fk_id1=table1.id;当根据所述数据请求遍历所述数据库表关系图,取得多个数据库表对象时,且,存在有两个没有直接关系数据库表对象,则根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图寻找对两个数据库表对象之间的间接关系,根据所述间接关系获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。步骤12、根据采用json描述规则描述的数据请求以及所述表关系的表达式,创建查询sql语句的表关系的筛查条件的表达式;根据采用json描述规则描述的数据请求提取所述数据请求的标签项对应的筛查条件,筛选条件是指需要满足的本次数据请求的筛查要求,仍然基于上述示例,从上述建立描述规则的示例中,可以获知本次数据请求的筛查条件是姓名name为张三,且年龄age大于18岁;根据所述表关系的表达式提取所述数据请求的标签项所匹配的表对象;根据上述步骤11中,根据所述表关系的表达式中,涉及table1班级信息表用于记录班级信息,和table2学生信息表用于记录学生信息;根据所述筛查条件和所述标签项所匹配的表对象创建查询sql语句的表关系的筛查条件的表达式;那么本实施例中,创建的筛选条件的表达式为:班级信息表.姓名=’张三’and学生信息表.年龄>18;具体到本实施例中个,可表示为:table1.`name`='张三'andtable2.age>18;步骤13、根据所述表关系的表达式和筛查条件的表达式生成sql语句操作数据库。例如上述,采用所述描述规则描述数据请求中,["table1.name","=","张三"],["table2.age",">","18"]为本次请求的请求条件,那么转换的sql语句为:selecttable1.`name`,table2.agefromtable1innerjointable2ontable2.fk_id1=table1.idwheretable1.`name`='张三'andtable2.age>18实施例二该实施例提供了一种基于json语句操作数据库的系统,其具体实现结构如图3所示,具体可以包括如下的模块:第一描述模块31、第二描述模块32以及操作模块33;其中,第一描述模块31:其用于根据采用json描述规则描述的数据库表关系图以及根据采用json描述规则描述的数据请求,创建查询sql语句的表关系的表达式;第二描述模块32:其用于根据采用json描述规则描述的数据请求以及所述表关系的表达式,创建查询sql语句的表关系的筛查条件的表达式;操作模块33:其用于根据所述表关系的表达式和筛查条件的表达式生成sql语句操作数据库。所述第一描述模块31,具体用于:根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。所述第一描述模块31,还具体用于:当根据所述数据请求遍历所述数据库表关系图,取得多个数据库表对象时,且,存在有两个没有直接关系数据库表对象,则根据所述数据请求提取标签项,根据所述标签项遍历所述数据库表关系图寻找对两个数据库表对象之间的间接关系,根据所述间接关系获取所述标签项的表对象,根据所述表对象创建查询sql语句的表关系的表达式。所述第二描述模块32,还具体用于:根据采用json描述规则描述的数据请求提取所述数据请求的标签项对应的筛查条件;根据所述表关系的表达式提取所述数据请求的标签项所匹配的表对象;根据所述筛查条件和所述标签项所匹配的表对象创建查询sql语句的表关系的筛查条件的表达式。本实施例的基于json语句操作数据库的系统,还包括:建立模块30:其用于:预先建立json与数据库表对应表达规则作为json描述规则,采用所述描述规则描述数据库表关系图,以及采用所述描述规则描述数据请求。用本发明实施例的系统进行基于json语句操作数据库的具体过程与前述方法实施例类似,此处不再赘述。综上所述,本发明实施例通过预先建立json与数据库表对应描述规则,采用所述描述规则描述所述数据库表关系图,以及采用所述描述规则描述数据请求;根据所述数据请求通过所述数据库表关系图创建查询sql语句的表关系和筛查条件的表达式;根据所述表关系和筛查条件的表达式生成sql语句操作数据库。此方来生成查询sql语句的做法,是一种一劳永逸的方式,在理想情况下查询sql语句的编写过程实现了零代码。能够极大的改善业务逻辑复杂的基于数据库项目的开发工作。提高工作效率和产品质量。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1