结构化查询语言的生成方法、终端及计算机可读存储介质技术

技术编号:16270070 阅读:51 留言:0更新日期:2017-09-22 21:44
本发明专利技术实施例公开了一种结构化查询语言的生成方法、装置及计算机可读存储介质。该方法包括:在页面层接收提交的数据,所述数据包括预设注解标签;在实体层通过所述预设注解标签对所述数据进行标注;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。该终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明专利技术提供的结构化查询语言的生成方法的步骤。该计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现本发明专利技术提供的结构化查询语言的生成方法的步骤。本发明专利技术能提高了开发效率,并降低代码错误率。

【技术实现步骤摘要】
结构化查询语言的生成方法、终端及计算机可读存储介质
本专利技术涉及WEB开发
,尤其涉及一种结构化查询语言的生成方法、终端及计算机可读存储介质。
技术介绍
在WEB开发的时候,一般采用MVC模式,MVC模式使得程序员能够更加清晰的分层开发,在更新一条记录时,一般都是View(页面,缩写为V)层传入要更新的数据,后台Controller层(控制层,缩写为C)接收数据并绑定参数到对应的实体(Model层)后,最后根据更规则生成对应的结构化查询语言(StructuredQueryLanguage,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和ViewC是业务允许为NULL的属性,ViewE和ViewF是为业务不允许为NULL的属性,当将ViewB和ViewC设为NULL并更新时,会被过滤掉,无法完成更新。现存的一些数据持久框架中,很多无法做到根据业务需求灵活更新属性,只能通过其他方式,比如手动拼写SQL语句来完成SQL生成,而不是交给数据持久框架完成,这存在的问题很多,首先是违背了面向对象编程的初衷,是用户操作复杂化;其次,如果数据表中字段很多,更新的SQL语句必然很长,手动拼写出错的概率大大增加,严重影响了开发效率!
技术实现思路
本专利技术实施例提供了一种结构化查询语言的生成方法、装置及计算机可读存储介质,旨在使用户在面向对象的基础上能根据业务需求灵活处理数据的增删改查操作,而不必因为一个特殊属性值得变化而调整开发策略。有鉴于此,本专利技术实施例第一方面,提供了一种结构化查询语言的生成方法,所述方法包括:在页面层接收提交的数据,所述数据包括针对数据属性的预设注解标签;在实体层通过所述预设注解标签对所述数据进行标注;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。在一种可能的设计中,所述在实体层通过所述预设注解标签对所述数据进行标注之前,所述方法还包括步骤:判断所述数据是否为空值;若是,则执行所述在实体层通过所述预设注解标签对所述数据进行标注的步骤。在一种可能的设计中,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。在一种可能的设计中,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:通过反射机制读取标注后的数据;判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言。本实施例中,若所述标注后的数据不是非表属性的数据,则所述方法还包括:判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。本实施例中,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。在一种可能的设计中,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。本实施例中,所述判断所述标注后的数据是否为业务可为空属性的数据之前,所述方法还包括:判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。本专利技术实施例第二方面提供了一种终端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本专利技术实施例提供的所述的结构化查询语言的生成方法的步骤。本专利技术实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现本专利技术实施例提供的所述的结构化查询语言的生成方法的步骤。从以上技术方案可以看出,本专利技术实施例中,通过通过预设注解标签结合反射机制在空值更新的问题上可以极大程度减少开发量,在不违背面向对象原则的基础上保证了代码的整洁性与可读性,同时提高了开发效率,降低了代码错误率。附图说明图1为现有技术中空值更新的示意图;图2为现有技术中空值以及业务可为空属性的空值更新的示意图;图3为本专利技术结构化查询语言的生成方法一个实施例的示意图;图4为本专利技术结构化查询语言的生成方法另一个实施例的示意图;图5为本专利技术结构化查询语言的生成方法另一个实施例的示意图;图6为本专利技术结构化查询语言的生成方法的空值更新的示意图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。请参阅图3,图3为本专利技术一种结构化查询语言的生成方法一个实施例示意图,包括:301、开始;302、在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(Value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;303、在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@NullColumn”;304、通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;305、结束。如图4所示,本专利技术实施例提供本文档来自技高网
...
结构化查询语言的生成方法、终端及计算机可读存储介质

【技术保护点】
一种结构化查询语言的生成方法,其特征在于,所述方法包括:在页面层接收提交的数据,所述数据包括预设注解标签;在实体层通过所述预设注解标签对所述数据进行标注;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。

【技术特征摘要】
1.一种结构化查询语言的生成方法,其特征在于,所述方法包括:在页面层接收提交的数据,所述数据包括预设注解标签;在实体层通过所述预设注解标签对所述数据进行标注;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中。2.如权利要求1所述的结构化查询语言的生成方法,其特征在于,所述在实体层通过所述预设注解标签对所述数据进行标注之前,所述方法还包括步骤:判断所述数据是否为空值;若是,则执行所述在实体层通过所述预设注解标签对所述数据进行标注的步骤。3.如权利要求1所述的结构化查询语言的生成方法,其特征在于,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。4.如权利要求3所述的结构化查询语言的生成方法,其特征在于,所述通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言具体包括:通过反射机制读取标注后的数据;判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言。5.如权利要求4所述的结构化查询语言的生成方法,其特征在于,若所述标注后的数据不是非表属性的数据,则所述方法还包括:判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。6.如权利要求...

【专利技术属性】
技术研发人员:王杉杉
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1