本发明涉及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所示,本发明实施例提供的结构化查询语言的生成方法的另一个可选实施例中,包括: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、viewd和viewe是表属性数据;viewb和viewc是表属性且业务可为空属性,viewg是非表属性的数据;504、通过反射机制读取标注后的数据;505、判断所述标注后的数据是否为非表属性的数据;若是,则进入步骤506;若否,则进入步骤507;506、不将所述标注后的数据拼接到结构化查询语言;例如,图6中的非表属性的数据viewg是不需要拼接到结构化查询语言的;507、判断所述标注后的数据是否为业务可为空属性的数据;若是,则进入步骤508;若否,则进入步骤509;508、将所述标注后的数据拼接到结构化查询语言;例如,图6中的viewb和viewc是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;509、结束;本实施例中的结束是指判断流程的结束,在具体实施时,结束后转至现有技术中的框架流程继续即可。可选地,在上述图5对应的实施例的基础上,本发明实施例提供的结构化查询语言的生成方法一个可选实施例中,在判断所述标注后的数据是否为业务可为空属性的数据即步骤507之前,还包括:判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。本发明还提供一种终端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明任一实施例提供的结构化查询语言的生成方法的步骤。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。所述计算机程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;本发明实施例提供的终端的另一个可选实施例中,所述计算机程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;判断所述数据是否为空值;更具体地,是判断数据的值是否为空值;若是,则在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;本实施例中,先判断数据的值是否为空值,若是,则再根据其对应的预设注解标签对所述数据进行标注;从而在针对空值的处理上,减少需要标注的数据,提升效率。可选地,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。更具体地,一个数据对应的预设注解标签可以是一种或两种;一般地,可以包括表属性、非表属性中的一个以及业务可为空属性、业务不可为空属性中的一个。可选地,本发明实施例提供的终端一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述计算机程序被所述处理器执行以实现以下步骤:通过反射机制读取标注后的数据;判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述计算机程序被所述处理器执行以实现以下步骤:通过反射机制读取标注后的数据;判断所述标注后的数据是否为空值;若是,则判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。在具体实施时,上述两个判断步骤可以反向进行,可以先判断所述标注后的数据是否为业务可为空属性的数据;若否,则判断所述标注后的数据是否为空值;若数据为空值,则不拼接到结构化查询语言;若不是空值则拼接到结构化查询语言。可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述计算机程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,该预设注解标签可以包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种;本实施例中,每个数据对应的预设注解标签为一个或两个;更具体地,若某个数据的属性的预设注解标签为非表属性,则不用再包括其他预设注解标签;若某个数据的属性的预设注解标签为表属性,则可以进一步设置其是否为业务可为空属性;在具体实施时,若某个数据的属性的预设注解标签为表属性,且业务不可为空,此时,可以不对该数据设置业务不可为空属性;也就是说,若某数据只包括表属性,则默认其还包括业务不可为空属性;在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;对表属性的预设注解标签的标注是“@column”;对非表属性的预设注解标签的标注是“@uncolumn”;请同时参照图6,在本实施例中,viewa、viewd和viewe是表属性数据;viewb和viewc是表属性且业务可为空属性,viewg是非表属性的数据;通过反射机制读取标注后的数据;判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言;例如,图6中的非表属性的数据viewg是不需要拼接到结构化查询语言的;若否,则判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言;例如,图6中的viewb和viewc是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;可选地,在判断所述标注后的数据是否为业务可为空属性的数据之前,所述计算机程序被所述处理器执行以实现以下步骤:判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有结构化查询语言的生成程序,所述结构化查询语言的生成程序被处理器执行时实现如本发明任一实施例提供的结构化查询语言的生成方法的步骤。所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;本发明实施例提供的终端的另一个可选实施例中,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,一般地,该预设注解标签可以标注在数据的属性上;例如需要提交的数据为:年龄18,此时,年龄为数据的属性;而18为数据的值(value);预设注解标签例如是业务可为空属性,表明年龄是可以输入空值的;其是标注在数据的属性即年龄上的;判断所述数据是否为空值;更具体地,是判断数据的值是否为空值;若是,则在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言中;更具体地,需要标注后的数据的标注内容代表的是业务可为空属性,则即使为空值,也将其拼接到结构化查询语言中;数据库执行更新的结构化查询语言即可完成业务更新功能;本实施例中,先判断数据的值是否为空值,若是,则再根据其对应的预设注解标签对所述数据进行标注;从而在针对空值的处理上,减少需要标注的数据,提升效率。可选地,所述数据对应的预设注解标签包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种。更具体地,一个数据对应的预设注解标签可以是一种或两种;一般地,可以包括表属性、非表属性中的一个以及业务可为空属性、业务不可为空属性中的一个。可选地,本发明实施例提供的终端一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:通过反射机制读取标注后的数据;判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述数据对应的预设注解标签包括业务可为空属性。在通过反射机制读取标注后的数据并确定是否将其拼接到结构化查询语言时,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:通过反射机制读取标注后的数据;判断所述标注后的数据是否为空值;若是,则判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言。在具体实施时,上述两个判断步骤可以反向进行,可以先判断所述标注后的数据是否为业务可为空属性的数据;若否,则判断所述标注后的数据是否为空值;若数据为空值,则不拼接到结构化查询语言;若不是空值则拼接到结构化查询语言。可选地,本发明实施例提供的终端的生成方法一个可选实施例中,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:在页面层接收提交的数据,所述数据包括预设注解标签;更具体地,预设注解标签可以根据业务需求进行设定,该预设注解标签可以包括表属性、非表属性、业务可为空属性、业务不可为空属性中的至少一种;本实施例中,每个数据对应的预设注解标签为一个或两个;更具体地,若某个数据的属性的预设注解标签为非表属性,则不用再包括其他预设注解标签;若某个数据的属性的预设注解标签为表属性,则可以进一步设置其是否为业务可为空属性;在具体实施时,若某个数据的属性的预设注解标签为表属性,且业务不可为空,此时,可以不对该数据设置业务不可为空属性;也就是说,若某数据只包括表属性,则默认其还包括业务不可为空属性;在实体层通过所述预设注解标签对所述数据进行标注;本实施例中以“@”的开头的单词进行标注,例如对业务可为空属性的预设注解标签的标注是“@nullcolumn”;对表属性的预设注解标签的标注是“@column”;对非表属性的预设注解标签的标注是“@uncolumn”;请同时参照图6,在本实施例中,viewa、viewd和viewe是表属性数据;viewb和viewc是表属性且业务可为空属性,viewg是非表属性的数据;通过反射机制读取标注后的数据;判断所述标注后的数据是否为非表属性的数据;若是,则不将所述标注后的数据拼接到结构化查询语言;例如,图6中的非表属性的数据viewg是不需要拼接到结构化查询语言的;若否,则判断所述标注后的数据是否为业务可为空属性的数据;若是,则将所述标注后的数据拼接到结构化查询语言;例如,图6中的viewb和viewc是表属性、业务可为空属性的数据,若其为空值,也需要拼接到结构化查询语言;可选地,在判断所述标注后的数据是否为业务可为空属性的数据之前,所述结构化查询语言的生成程序被所述处理器执行以实现以下步骤:判断所述标注后的数据是否为空值;若是,则执行所述判断所述标注后的数据是否为业务可为空属性的数据的步骤。本发明实施例提供的结构化查询语言的生成方法、终端及计算机可读存储介质,本发明利用java反射机制,结合预设注解标签的方式对需要持久到数据库中实体属性进行标注,程序员只需根据业务需求对数据的属性增加自定义的预设注解标签,特别对于空值值得更新处理上,增加业务可为空属性并标注“上@nullcolumn”可以极大程度减少开发量,本发明可以根据业务需求灵活改变,在不违背面向对象原则的基础上保证了代码的整洁性与可读性,同时提高了开发效率,降低了代码错误率。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页12当前第1页12