CN107193957A - 结构化查询语言的生成方法、终端及计算机可读存储介质 - Google Patents
结构化查询语言的生成方法、终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107193957A CN107193957A CN201710367999.7A CN201710367999A CN107193957A CN 107193957 A CN107193957 A CN 107193957A CN 201710367999 A CN201710367999 A CN 201710367999A CN 107193957 A CN107193957 A CN 107193957A
- Authority
- CN
- China
- Prior art keywords
- data
- sql
- mark
- business
- null
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种结构化查询语言的生成方法、装置及计算机可读存储介质。该方法包括:在页面层接收提交的数据,所述数据包括预设注解标签;在实体层通过所述预设注解标签对所述数据进行标注;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。该终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明提供的结构化查询语言的生成方法的步骤。该计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现本发明提供的结构化查询语言的生成方法的步骤。本发明能提高了开发效率,并降低代码错误率。
Description
技术领域
本发明涉及WEB开发技术领域,尤其涉及一种结构化查询语言的生成方法、终端及计算机可读存储介质。
背景技术
在WEB开发的时候,一般采用MVC模式,MVC模式使得程序员能够更加清晰的分层开发,在更新一条记录时,一般都是View(页面,缩写为V)层传入要更新的数据,后台Controller层(控制层,缩写为C)接收数据并绑定参数到对应的实体(Model层)后,最后根据更规则生成对应的结构化查询语言(Structured Query Language,SQL)语句,交由数据库处理,返回处理结果。而将实体对应生成SQL并交由数据库处理的过程通常由一些对象关系映射(ORM)框架来完成。
框架中Mapper层通过反射机制将页面传入后台的数据映射到实体中对应属性后,并拼接成对应的SQL语句,交给数据库进行增删改查操作。生成的SQL语句通过主键查找要更新的记录,实现更新操作。
而业务中往往存在一种情况,例如,请参照图1所示,一张数据表中定义了(A,B,C,D,E,F)六个字段,用户在页面更新时可能不需要更新所有字段,所以传入更新的实体中字段会少于数据表字段,比如用户页面VIEW传入数据属性值为(A,B,C,D),而(E,F)两个属性在业务中是不需要进行更新的,即永久不变的,那么控制层Controller接收并绑定的实体ENTITY其实是(A,B,C,D,NULL,NULL);那么ORM在Mapper层生成SQL时,就会把其余值更新为NULL。
所以,现有一些持久框架在Mapper层通过View层传入的实体生成SQL时,如图1所示,直接将空值NULL进行过滤,即如果传入的实体中存在NULL值时,就不会将其拼接到SQL中,也就不会更新到数据库中。这样就能解决上面提到的问题。
但是,业务又有这样一种场景,比如一个用户在某个允许为空的字段填写了值,然后更新为NULL,于是在页面上把这个字段的内容清空,点击保存,会发现原先的内容居然还在,没有办法清除了,原因是数据持久框架在Mapper层对所有的空值(NULL)统一做了过滤,把实体中为NULL的不拼接到更新SQL中导致。
如图2所示,图中ViewB和View C是业务允许为NULL的属性,View E和ViewF是为业务不允许为NULL的属性,当将ViewB和View C设为NULL并更新时,会被过滤掉,无法完成更新。
现存的一些数据持久框架中,很多无法做到根据业务需求灵活更新属性,只能通过其他方式,比如手动拼写SQL语句来完成SQL生成,而不是交给数据持久框架完成,这存在的问题很多,首先是违背了面向对象编程的初衷,是用户操作复杂化;其次,如果数据表中字段很多,更新的SQL语句必然很长,手动拼写出错的概率大大增加,严重影响了开发效率!
发明内容
本发明实施例提供了一种结构化查询语言的生成方法、装置及计算机可读存储介质,旨在使用户在面向对象的基础上能根据业务需求灵活处理数据的增删改查操作,而不必因为一个特殊属性值得变化而调整开发策略。
有鉴于此,本发明实施例第一方面,提供了一种结构化查询语言的生成方法,所述方法包括:
在页面层接收提交的数据,所述数据包括针对数据属性的预设注解标签;
在实体层通过所述预设注解标签对所述数据进行标注;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。
在一种可能的设计中,所述在实体层通过所述预设注解标签对所述数据进行标注之前,所述方法还包括步骤:
判断所述数据是否为空值;
若是,则执行所述在实体层通过所述预设注解标签对所述数据进行标注的步骤。
在一种可能的设计中,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。
在一种可能的设计中,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为非表属性的数据;
若是,则不将所述标注后的数据拼接到结构化查询语言。
本实施例中,若所述标注后的数据不是非表属性的数据,则所述方法还包括:
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
本实施例中,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:
判断所述标注后的数据是否为空值;
若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
在一种可能的设计中,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
本实施例中,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:
判断所述标注后的数据是否为空值;
若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
本发明实施例第二方面提供了一种终端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明实施例提供的所述的结构化查询语言的生成方法的步骤。
本发明实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现本发明实施例提供的所述的结构化查询语言的生成方法的步骤。
从以上技术方案可以看出,本发明实施例中,通过通过预设注解标签结合反射机制在空值更新的问题上可以极大程度减少开发量,在不违背面向对象原则的基础上保证了代码的整洁性与可读性,同时提高了开发效率,降低了代码错误率。
附图说明
图1为现有技术中空值更新的示意图;
图2为现有技术中空值以及业务可为空属性的空值更新的示意图;
图3为本发明结构化查询语言的生成方法一个实施例的示意图;
图4为本发明结构化查询语言的生成方法另一个实施例的示意图;
图5为本发明结构化查询语言的生成方法另一个实施例的示意图;
图6为本发明结构化查询语言的生成方法的空值更新的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图3,图3为本发明一种结构化查询语言的生成方法一个实施例示意图,包括:
301、开始;
302、在页面层接收提交的数据,所述数据包括预设注解标签;
更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
303、在实体层通过所述预设注解标签对所述数据进行标注;
本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
304、通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;
更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
305、结束。
如图4所示,本发明实施例提供的结构化查询语言的生成方法的另一个可选实施例中,包括:
401、开始;
402、在页面层接收提交的数据,所述数据包括预设注解标签;
更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
403、判断所述数据是否为空值;若是,则进入步骤404;若否,则如步骤406所示,将其拼接到结构化查询语言中;
更具体地,是判断数据的值是否为空值;
404、在实体层通过所述预设注解标签对所述数据进行标注;
本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
405、通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;
更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
406、结束。
本实施例中,先判断数据的值是否为空值,若是,则再根据其对应的预设注解标签对所述数据进行标注;从而在针对空值的处理上,减少需要标注的数据,提升效率。
可选地,在上述图3或图4对应的任一实施例的基础上,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。
更具体地,一个数据对应的预设注解标签可以是一种或两种;一般地,可以包括表属性、非表属性中的一个以及业务可为空属性、业务不可为空属性中的一个。
可选地,在上述图3或图4对应的任一实施例的基础上,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
可选地,在上述图3对应的实施例的基础上,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为空值;若是,则
判断所述标注后的数据是否为业务可为空属性的数据;若是,则
将所述标注后的数据拼接到结构化查询语言。
在具体实施时,上述两个判断步骤可以反向进行,可以先判断所述标注后的数据是否为业务可为空属性的数据;若否,则判断所述标注后的数据是否为空值;若数据为空值,则不拼接到结构化查询语言;若不是空值则拼接到结构化查询语言。
如图5所示,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,包括:
501、开始;
502、在页面层接收提交的数据,所述数据包括预设注解标签;
更具体地,预设注解标签可以根据业务需求进行设定,该预设注解标签可以包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种;本实施例中,每个数据对应的预设注解标签为一个或两个;更具体地,若某个数据的属性的预设注解标签为非表属性,则不用再包括其他预设注解标签;若某个数据的属性的预设注解标签为表属性,则可以进一步设置其是否为业务可为空属性;在具体实施时,若某个数据的属性的预设注解标签为表属性,且业务不可为空,此时,可以不对该数据设置业务不可为空属性;也就是说,若某数据只包括表属性,则默认其还包括业务不可为空属性;
503、在实体层通过所述预设注解标签对所述数据进行标注;
本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;对表属性的预设注解标签的标注是“@Column”;对非表属性的预设注解标签的标注是“@UnColumn”;请同时参照图6,在本实施例中,ViewA、View D和ViewE是表属性数据;View B和View C是表属性且业务可为空属性,View G是非表属性的数据;
504、通过反射机制读取标注后的数据;
505、判断所述标注后的数据是否为非表属性的数据;若是,则进入步骤506;若否,则进入步骤507;
506、不将所述标注后的数据拼接到结构化查询语言;
例如,图6中的非表属性的数据View G是不需要拼接到结构化查询语言的;
507、判断所述标注后的数据是否为业务可为空属性的数据;若是,则进入步骤508;若否,则进入步骤509;
508、将所述标注后的数据拼接到结构化查询语言;
例如,图6中的ViewB和View C是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;
509、结束;
本实施例中的结束是指判断流程的结束,在具体实施时,结束后转至现有技术中的框架流程继续即可。
可选地,在上述图5对应的实施例的基础上,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,在判断所述标注后的数据是否为业务可为空属性的数据即步骤507之前,还包括:
判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
本发明还提供一种终端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明任一实施例提供的结构化查询语言的生成方法的步骤。
终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable MediaPlayer,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。
所述计算机程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
本发明实施例提供的终端的另一个可选实施例中,所述计算机程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
判断所述数据是否为空值;更具体地,是判断数据的值是否为空值;若是,则
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
本实施例中,先判断数据的值是否为空值,若是,则再根据其对应的预设注解标签对所述数据进行标注;从而在针对空值的处理上,减少需要标注的数据,提升效率。
可选地,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。更具体地,一个数据对应的预设注解标签可以是一种或两种;一般地,可以包括表属性、非表属性中的一个以及业务可为空属性、业务不可为空属性中的一个。
可选地,本发明实施例提供的终端一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述计算机程序被所述处理器执行以实现以下步骤:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述计算机程序被所述处理器执行以实现以下步骤:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为空值;若是,则
判断所述标注后的数据是否为业务可为空属性的数据;若是,则
将所述标注后的数据拼接到结构化查询语言。
在具体实施时,上述两个判断步骤可以反向进行,可以先判断所述标注后的数据是否为业务可为空属性的数据;若否,则判断所述标注后的数据是否为空值;若数据为空值,则不拼接到结构化查询语言;若不是空值则拼接到结构化查询语言。
可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述计算机程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,该预设注解标签可以包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种;本实施例中,每个数据对应的预设注解标签为一个或两个;更具体地,若某个数据的属性的预设注解标签为非表属性,则不用再包括其他预设注解标签;若某个数据的属性的预设注解标签为表属性,则可以进一步设置其是否为业务可为空属性;在具体实施时,若某个数据的属性的预设注解标签为表属性,且业务不可为空,此时,可以不对该数据设置业务不可为空属性;也就是说,若某数据只包括表属性,则默认其还包括业务不可为空属性;
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;对表属性的预设注解标签的标注是“@Column”;对非表属性的预设注解标签的标注是“@UnColumn”;请同时参照图6,在本实施例中,ViewA、View D和View E是表属性数据;View B和View C是表属性且业务可为空属性,View G是非表属性的数据;
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言;例如,图6中的非表属性的数据View G是不需要拼接到结构化查询语言的;若否,则
判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言;例如,图6中的View B和View C是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;
可选地,在判断所述标注后的数据是否为业务可为空属性的数据之前,所述计算机程序被所述处理器执行以实现以下步骤:
判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现如本发明任一实施例提供的结构化查询语言的生成方法的步骤。
所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
本发明实施例提供的终端的另一个可选实施例中,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;
判断所述数据是否为空值;更具体地,是判断数据的值是否为空值;若是,则
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;
本实施例中,先判断数据的值是否为空值,若是,则再根据其对应的预设注解标签对所述数据进行标注;从而在针对空值的处理上,减少需要标注的数据,提升效率。
可选地,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。更具体地,一个数据对应的预设注解标签可以是一种或两种;一般地,可以包括表属性、非表属性中的一个以及业务可为空属性、业务不可为空属性中的一个。
可选地,本发明实施例提供的终端一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为空值;若是,则
判断所述标注后的数据是否为业务可为空属性的数据;若是,则
将所述标注后的数据拼接到结构化查询语言。
在具体实施时,上述两个判断步骤可以反向进行,可以先判断所述标注后的数据是否为业务可为空属性的数据;若否,则判断所述标注后的数据是否为空值;若数据为空值,则不拼接到结构化查询语言;若不是空值则拼接到结构化查询语言。
可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,该预设注解标签可以包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种;本实施例中,每个数据对应的预设注解标签为一个或两个;更具体地,若某个数据的属性的预设注解标签为非表属性,则不用再包括其他预设注解标签;若某个数据的属性的预设注解标签为表属性,则可以进一步设置其是否为业务可为空属性;在具体实施时,若某个数据的属性的预设注解标签为表属性,且业务不可为空,此时,可以不对该数据设置业务不可为空属性;也就是说,若某数据只包括表属性,则默认其还包括业务不可为空属性;
在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;对表属性的预设注解标签的标注是“@Column”;对非表属性的预设注解标签的标注是“@UnColumn”;请同时参照图6,在本实施例中,ViewA、View D和View E是表属性数据;ViewB和View C是表属性且业务可为空属性,View G是非表属性的数据;
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言;例如,图6中的非表属性的数据View G是不需要拼接到结构化查询语言的;若否,则
判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言;例如,图6中的View B和View C是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;
可选地,在判断所述标注后的数据是否为业务可为空属性的数据之前,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:
判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
本发明实施例提供的结构化查询语言的生成方法、终端及计算机可读存储介质,本发明利用Java反射机制,结合预设注解标签的方式对需要持久到数据库中实体属性进行标注,程序员只需根据业务需求对数据的属性增加自定义的预设注解标签,特别对于空值值得更新处理上,增加业务可为空属性并标注“上@NullColumn”可以极大程度减少开发量,本发明可以根据业务需求灵活改变,在不违背面向对象原则的基础上保证了代码的整洁性与可读性,同时提高了开发效率,降低了代码错误率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种结构化查询语言的生成方法,其特征在于,所述方法包括:
在页面层接收提交的数据,所述数据包括预设注解标签;
在实体层通过所述预设注解标签对所述数据进行标注;
通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。
2.如权利要求1所述的结构化查询语言的生成方法,其特征在于,所述在实体层通过所述预设注解标签对所述数据进行标注之前,所述方法还包括步骤:
判断所述数据是否为空值;
若是,则执行所述在实体层通过所述预设注解标签对所述数据进行标注的步骤。
3.如权利要求1所述的结构化查询语言的生成方法,其特征在于,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。
4.如权利要求3所述的结构化查询语言的生成方法,其特征在于,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
通过反射机制读取标注后的数据;
判断所述标注后的数据是否为非表属性的数据;
若是,则不将所述标注后的数据拼接到结构化查询语言。
5.如权利要求4所述的结构化查询语言的生成方法,其特征在于,若所述标注后的数据不是非表属性的数据,则所述方法还包括:
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
6.如权利要求5所述的结构化查询语言的生成方法,其特征在于,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:
判断所述标注后的数据是否为空值;
若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
7.如权利要求3所述的结构化查询语言的生成方法,其特征在于,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:
判断所述标注后的数据是否为业务可为空属性的数据;
若是,则将所述标注后的数据拼接到结构化查询语言。
8.如权利要求7所述的结构化查询语言的生成方法,其特征在于,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:
判断所述标注后的数据是否为空值;
若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。
9.一种终端,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8中任一项所述的结构化查询语言的生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现如权利要求1至8中任一项所述的结构化查询语言的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710367999.7A CN107193957A (zh) | 2017-05-23 | 2017-05-23 | 结构化查询语言的生成方法、终端及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710367999.7A CN107193957A (zh) | 2017-05-23 | 2017-05-23 | 结构化查询语言的生成方法、终端及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107193957A true CN107193957A (zh) | 2017-09-22 |
Family
ID=59874478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710367999.7A Pending CN107193957A (zh) | 2017-05-23 | 2017-05-23 | 结构化查询语言的生成方法、终端及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193957A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050010569A1 (en) * | 2003-05-27 | 2005-01-13 | Cognos Incorporated | System and method of query transformation |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN103226478A (zh) * | 2013-05-22 | 2013-07-31 | 北京金和软件股份有限公司 | 一种自动生成并使用代码的方法 |
CN105159920A (zh) * | 2015-07-28 | 2015-12-16 | 卡斯柯信号有限公司 | 一种基于属性标签的数据库访问方法 |
-
2017
- 2017-05-23 CN CN201710367999.7A patent/CN107193957A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050010569A1 (en) * | 2003-05-27 | 2005-01-13 | Cognos Incorporated | System and method of query transformation |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN103226478A (zh) * | 2013-05-22 | 2013-07-31 | 北京金和软件股份有限公司 | 一种自动生成并使用代码的方法 |
CN105159920A (zh) * | 2015-07-28 | 2015-12-16 | 卡斯柯信号有限公司 | 一种基于属性标签的数据库访问方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2504082C (en) | Method and apparatus for generating user interfaces based upon automation with full flexibility | |
CN105335133B (zh) | 用于生成业务规则模型的方法和装置 | |
US8020172B2 (en) | Using status models having status derivations in a computer system | |
EP1257916A1 (en) | System and method for translating to and from hierarchical information systems | |
US8209295B2 (en) | Storing information with a description logic file system | |
US20130275344A1 (en) | Personalized semantic controls | |
CN104169871A (zh) | 软件开发方法和装置 | |
US9208590B2 (en) | Manipulation of an object as an image of a mapping of graph data | |
CN100392651C (zh) | 一种实时内存数据库通用约束的实现方法 | |
CN111784108B (zh) | 一种主数据管理平台的建模方法和装置 | |
US8230357B2 (en) | Visually processing instance data | |
US7822621B1 (en) | Method of and system for populating knowledge bases using rule based systems and object-oriented software | |
CN107315764A (zh) | 一种非关系型数据库关联数据的更新方法及系统 | |
CN106446019A (zh) | 一种软件功能处理方法和装置 | |
US9823804B2 (en) | Unified user interface framework for creating configurable web-portals using menu options | |
EP1460572A2 (en) | Parameterized and reusable implementations of business logic patterns | |
US11663199B1 (en) | Application development based on stored data | |
CN112287644B (zh) | 一种数据提交方法、装置、计算机设备和可读存储介质 | |
US20220019907A1 (en) | Dynamic In-Memory Construction of a Knowledge Graph | |
CN111460779B (zh) | 一种基于Activiti的流程表单数据渲染和存取方法 | |
CN107193957A (zh) | 结构化查询语言的生成方法、终端及计算机可读存储介质 | |
US8762421B2 (en) | Accessing entities of data access layer | |
US7603363B2 (en) | Systems and methods for controlling transaction participation for groups of steps in a workflow | |
US20060026522A1 (en) | Method and apparatus for revising data models and maps by example | |
CN107766048A (zh) | 一种页面编译方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170922 |
|
RJ01 | Rejection of invention patent application after publication |