数据交互方法和装置与流程

文档序号:21777868发布日期:2020-08-07 19:46阅读:150来源:国知局
数据交互方法和装置与流程

本发明涉及javaee平台进行web应用系统开发技术领域,尤其涉及一种数据交互方法和装置。



背景技术:

对象关系映射(objectrelationalmapping,简称orm)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。orm主要是与数据库进行数据交互。

现有技术中,orm通常是基于springjdbc实现的,然而基于springjdbc实现的orm与数据库的每一次交互过程,都需要开发人员预先针对每一次待实现的交互过程分别自行编写大量的sql语句等,每一次都需要编写大量的代码,这样将花费大量时间,从而造成开发效率和交互效率均较低。



技术实现要素:

本发明提供一种数据交互方法和装置,能够提高开发效率和数据交互效率。

第一方面,本发明提供一种数据交互方法,包括:

获取待处理的java对象,其中,所述待处理的java对象包括类名和至少一个成员变量名;

根据预设的第一封装对象对所述待处理的java对象的类名以及每一个所述成员变量名分别进行转换,得到与所述类名对应的数据表名、与每一个所述成员变量名分别一一对应的字段名,其中,所述第一封装对象配置有名称转换规则;

根据预设的第二封装对象对所述数据表名和每一个所述字段名进行处理,生成与数据库交互所需的结构化查询语言sql语句,其中,所述第二封装对象配置有sql语句生成规则;

根据所述第二封装对象,依据所述sql语句和所述待处理的java对象调用springjdbc的应用程序接口,以与所述数据库进行交互,其中,所述第二封装对象还配置有接口调用规则。

进一步地,所述名称转换规则,包括:

在所述类名中的首个第一大写字母的前面添加下划线,以得到所述数据表名,其中,所述第一大写字母不是所述类名的首字母;

在每一个所述成员变量名中的首个第二大写字母的前面添加下划线,以得到与每一个所述成员变量名分别一一对应的字段名,其中,所述第二大写字母不是所述成员变量名的首字母。

进一步地,所述sql语句生成规则,包括:

根据所述数据表名、每一个所述字段名、以及每一个所述成员变量名一一对应的属性值,生成所述sql语句,其中,所述属性值为基于java反射机制获取的。

进一步地,若所述sql语句为表征进行查询操作的sql语句,则用于生成所述sql语句的属性值不能为空。

进一步地,还包括:

获取待插入的java对象数组,其中,所述java对象数组中包括多个待插入的java对象;

根据预设第三封装对象,将所述待插入的java对象数组插入到所述数据库中,其中,所述第三封装对象配置有批量插入规则。

第二方面,本发明提供了一种数据交互装置装置,包括:

第一获取单元,用于获取待处理的java对象,其中,所述待处理的java对象包括类名和至少一个成员变量名;

转换单元,用于根据预设的第一封装对象对所述待处理的java对象的类名以及每一个所述成员变量名分别进行转换,得到与所述类名对应的数据表名、与每一个所述成员变量名分别一一对应的字段名,其中,所述第一封装对象配置有名称转换规则;

生成单元,用于根据预设的第二封装对象对所述数据表名和每一个所述字段名进行处理,生成与数据库交互所需的结构化查询语言sql语句,其中,所述第二封装对象配置有sql语句生成规则;

调用单元,用于根据所述第二封装对象,依据所述sql语句和所述待处理的java对象调用springjdbc的应用程序接口,以与所述数据库进行交互,其中,所述第二封装对象还配置有接口调用规则。

进一步地,所述名称转换规则,包括:

在所述类名中的首个第一大写字母的前面添加下划线,以得到所述数据表名,其中,所述第一大写字母不是所述类名的首字母;

在每一个所述成员变量名中的首个第二大写字母的前面添加下划线,以得到与每一个所述成员变量名分别一一对应的字段名,其中,所述第二大写字母不是所述成员变量名的首字母。

进一步地,所述sql语句生成规则,包括:

根据所述数据表名、每一个所述字段名、以及每一个所述成员变量名一一对应的属性值,生成所述sql语句,其中,所述属性值为基于java反射机制获取的。

进一步地,若所述sql语句为表征进行查询操作的sql语句,则用于生成所述sql语句的属性值不能为空。

进一步地,所述装置还包括:

第二获取单元,用于获取待插入的java对象数组,其中,所述java对象数组中包括多个待插入的java对象;

插入单元,用于根据预设第三封装对象,将所述待插入的java对象数组插入到所述数据库中,其中,所述第三封装对象配置有批量插入规则。

第三方面,本发明提供了一种数据交互设备,包括:存储器和处理器;

所述存储器,用于存储计算机程序。

其中,所述处理器执行所述存储器中的计算机程序,以实现第一方面中任一项所述的方法。

第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面中任一项所述的方法。

本发明提供了一种数据交互方法和装置,通过预先设置第一封装对象,其中,第一封装对象中配置有名称转换规则,也即,针对任意一个待处理的java对象,均可以通过该第一封装对象自动完成相应类名和相应成员变量名的转换,得到相应的表名和字段名,而无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量代码来实现转换名称过程;另外,本方案还预先设置有第二封装对象,其中,第二封装对象中配置有sql语句生成规则和接口调用规则,也即,针对任意一个待处理的java对象,根据该第二封装对象均可以自动生成相应的sql语句,以及自动调用springjdbc的api,从而也无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量sql语句的过程。因此,基于本方案,大大减少了开发人员的工作量,提高了开发效率,进而提高了数据交互效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本发明实施例一提供的一种数据交互方法的流程图;

图2为本发明实施例二提供的一种数据交互方法的流程图;

图3为本发明实施例三提供的一种数据交互装置的结构示意图;

图4为本发明实施例四提供的一种数据交互装置的结构示意图;

图5为本发明实施例五提供的一种数据交互设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,比较流行的orm框架主要有以下三种:

第一种是hibernate,但过于臃肿,使用不够灵活,全表映射带来了不便,比如更新时需要发送所有的字段,无法根据不同的条件组装不同的sql,性能较差。

第二种是mybatis,属于轻量级,基于可扩展标记语言(extensiblemarkuplanguage,简称xml)的模式,但不利于封装、代码量也不小,而且基于xml维护较麻烦,mybatis更适合存在dba角色的年代,可以远离代码进行sql调优,复杂的查询拼装起来也更加优雅,但是不适合查询业务简单但是数据库集群环境的场景。

第三种是springjdbc,小巧,灵活,足够优秀,但是代码量偏大,原生的接口重复劳动量大,比如insert、mapper之类的。由于springjdbc比较偏底层,那么,基于springjdbc实现的orm框架若想要与数据库进行交互,则需要开发人员预先针对每一次的交互过程编写大量的代码来实现。举例来说,共有1000个java对象,假设需要利用这1000个java对象中的每一个都跟数据库进行一次查询操作,那么则需要开发人员针对每一个具体的java对象通过自行编写大量的sql语句等来实现与数据库的交互,也即开发人员需要编写1000次的大量代码,可见,开发效率极低,从而也造成数据交互效率极低。因此,本方案针对现有技术中的基于springjdbc实现的orm框架进行了优化,以提高开发效率和数据交互效率。

图1为本发明实施例一提供的一种数据交互方法的流程图,如图1所示,以该实施例提供的方法应用于数据交互装置来进行示例说明,该方法包括:

步骤101:获取待处理的java对象,其中,所述待处理的java对象包括类名和至少一个成员变量名。

实际应用中,本实施例的执行主体可以为数据交互装置,该数据交互装置可以为程序软件,也可以为存储有相关计算机程序的介质,例如,u盘等;或者,该数据交互装置还可以为集成或安装有相关计算机程序的实体设备,例如,芯片、智能终端、电脑、服务器等。

在本实施例中,可通过与前端的交互确定待处理的java对象,具体的,可根据用户在前端的点击触发,确定本次需要与数据库交互的java对象,然后基于现有技术中的java发射机制,获取到待处理的java对象的类名以及至少一个成员变量名。

步骤102:根据预设的第一封装对象对所述待处理的java对象的类名以及每一个所述成员变量名分别进行转换,得到与所述类名对应的数据表名、与每一个所述成员变量名分别一一对应的字段名,其中,所述第一封装对象配置有名称转换规则。

在本实施例中,为了提高开发人员的开发效率、数据交互效率,本方案预先设置了第一封装对象,该第一封装对象中配置有名称转换规则,也即,针对任意一个待处理的java对象,均可以通过该第一封装对象中的名称转换规则自动完成相应类名和相应成员变量名的转换,无需开发人员针对每一个具体的待处理的java对象自行编写大量代码来实现转换过程。

步骤103:根据预设的第二封装对象对所述数据表名和每一个所述字段名进行处理,生成与数据库交互所需的结构化查询语言sql语句,其中,所述第二封装对象配置有sql语句生成规则。

在本实施例中,为了进一步提高开发人员的开发效率、数据交互效率,本方案中还预先设置了第二封装对象,该第二封装对象中首先配置有sql语句生成规则,也即,针对任意一个待处理的java对象,在得到相应的表名和各个字段名之后,便可通过该第二封装对象中的sql语句生成规则对表名和字段名进行处理,以自动生成相应java对象所对应的sql语句,而避免了开发人员需要针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量sql语句的过程。

其中,sql语句包括查询操作的sql语句、删除操作的sql语句、增加操作sql语句、修改操作的sql语句等其中的任一项。值得说明的是,本方案中的第二封装对象还可按照具体的操作划分为多个第二封装子对象,比如,上述查询、删除、增加、修改这四种操作分别对应一个第二封装子对象,每一个第二封装子对象中配置有相应操作的sql语句生成规则,那么在需要与数据库进行交互时,可根据用户在前端选择的具体操作,从多个第二封装子对象中选择相应的第二封装子对象自动生成相应操作的sql语句。

步骤104:根据所述第二封装对象,依据所述sql语句和所述待处理的java对象调用springjdbc的应用程序接口,以与所述数据库进行交互,其中,所述第二封装对象还配置有接口调用规则。

在本实施例中,本方案中的第二封装对象中还设置有接口调用规则,也即,针对任意一个待处理的java对象,在通过第二封装对象生成相应java对象的sql语句之后,根据封装好的该接口调用规则,会自动将sql语句和所述待处理的java对象作为参数来调用用springjdbc的api,以与数据库进行交互,获得数据库返回的结果。

以进行查询操作为例,现有技术中,基于springjdbc查询代码可如下:

stringsql="select*fromerror_wordwhereerr_word_type

=:errwordtypeanderr_sample=:errsampleandright_word=:rightword";

map<string,object>params=newhashmap<string,object>();

params.put("errwordtype",errwordtype);

params.put("errsample",errsample");

params.put("rightword",rightword);

errorworderr=namedparameterjdbctemplate.query(sql,params,newbeanpropertyrowmapper<errorword>(errorword.class);

而通过本方案封装过后的查询代码如下:

errorworderrorword=newerrorword(errwordtype,errsample,rightword);

errorworderr=wordservice.getobject(errorword);

由此可见封装过后的orm框架简单明了,无需编写大量的sql语句,直接使用java对象作为参数,不再使用不友好的map作参数,而且该方法具体通用性,涉及到单表操作都可以调用该方法。从而通过本方案可以传递任意java对象作为参数即可实现单表的操作,无需编写sql语句就可以获取到结果。

本发明实施例提供了一种数据交互方法和装置,通过预先设置第一封装对象,其中,第一封装对象中配置有名称转换规则,也即,针对任意一个待处理的java对象,均可以通过该第一封装对象自动完成相应类名和相应成员变量名的转换,得到相应的表名和字段名,而无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量代码来实现转换名称过程;另外,本方案还预先设置有第二封装对象,其中,第二封装对象中配置有sql语句生成规则和接口调用规则,也即,针对任意一个待处理的java对象,根据该第二封装对象均可以自动生成相应的sql语句,以及自动调用springjdbc的api,从而也无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量sql语句的过程。因此,基于本方案大大减少了开发人员的工作量,提高了开发效率,进而提高了数据交互效率。

图2为本发明实施例二提供的一种数据交互方法的流程图,如图2所示,该方法可以包括:

步骤201:获取待处理的java对象,其中,待处理的java对象包括类名和至少一个成员变量名。

步骤202:根据预设的第一封装对象对待处理的java对象的类名以及每一个成员变量名分别进行转换,得到与类名对应的数据表名、与每一个成员变量名分别一一对应的字段名,其中,第一封装对象配置有名称转换规则。

其中,名称转换规则,包括:在类名中的首个第一大写字母的前面添加下划线,以得到数据表名,其中,第一大写字母不是类名的首字母;在每一个成员变量名中的首个第二大写字母的前面添加下划线,以得到与每一个成员变量名分别一一对应的字段名,其中,第二大写字母不是成员变量名的首字母。

举例来说,某个待处理的java对象的类名为irregularword,其中,i虽然为大写,但其为首字母,因此该类名的第一大写字母为w,然后需在w的前面增加下划线“_”,也即,w变为_w,最后得到与该类名对应的表名为irregular_word;再如该java对象的一个成员变量名为regularword,其中,第二大写字母为w,然后需在w的前面增加下划线“_”,也即,w变为_w,最后得到与该成员变量名对应的字段名为regular_word。在本实施例中,通过第一封装对象对任意一个java对象的类名进行转换的关键代码可如下:

步骤203:根据预设的第二封装对象对数据表名和每一个字段名进行处理,生成与数据库交互所需的sql语句,其中,第二封装对象配置有sql语句生成规则。

其中,sql语句生成规则,包括:根据数据表名、每一个字段名、以及每一个成员变量名一一对应的属性值,生成sql语句,其中,属性值为基于java反射机制获取的。

在本实施例中,在进行查询操作时,还可通过该第二封装对象支持多种条件的查询操作,也即若sql语句为表征进行查询操作的sql语句,则用于生成sql语句的属性值不能为空。具体的,基于java反射机制获取到待处理的java对象后,循环遍历该待处理的java对象的所有属性值,将不为空的各个属性值进行拼装,得到查询条件,然后再通过第二封装对象根据该查询条件自动生成查询操作的sql语句,以便于实现任一java对象的多条件查询操作,这样,用户只需修改属性值,基于本方案提供的第二封装对象便可实现多条件查询。举例来说,待处理的java对象共有四个成员变量名,若用户需要利用其中三个条件进行查询操作,则用户可将剩余的一个成员变量名改为空,那么基于本方案则按照另外三个成员变量名对应的属性值拼装查询条件,从而实现三种条件的查询操作,大大简化了多条件查询操作。

其中,实现多条件查询的关键代码如下:

步骤204:根据第二封装对象,依据sql语句和待处理的java对象调用springjdbc的应用程序接口,以与数据库进行交互,其中,第二封装对象还配置有接口调用规则。

在本实施例中,通过第二封装对象自动生成sql语句和自动调用接口的关键代码可如下:

步骤205:获取待插入的java对象数组,其中,java对象数组中包括多个待插入的java对象。

步骤206:根据预设的第三封装对象,将待插入的java对象数组插入到数据库中,其中,第三封装对象配置有批量插入规则。

在本实施例中,批量插入规则,包括:根据待插入的java对象数组,自动生成表征批量插入的sql语句。

其中,实现批量插入的关键代码可如下:

本发明实施例通过预先设置第三封装对象,从而只要获取到待插入的java对象数组就可以自动实现批量插入,优雅的实现批量插入操作,而需要开发人员每一次针对待插入的多个java对象,自行编写大量sql语句的过程。本方案基于第三封装对象简化了开发人员的编写工作量,进而大大提高了批量插入的效率。

图3为本发明实施例三提供的一种数据交互装置的结构示意图,包括:

第一获取单元,用于获取待处理的java对象,其中,所述待处理的java对象包括类名和至少一个成员变量名;

转换单元,用于根据预设的第一封装对象对所述待处理的java对象的类名以及每一个所述成员变量名分别进行转换,得到与所述类名对应的数据表名、与每一个所述成员变量名分别一一对应的字段名,其中,所述第一封装对象配置有名称转换规则;

生成单元,用于根据预设的第二封装对象对所述数据表名和每一个所述字段名进行处理,生成与数据库交互所需的结构化查询语言sql语句,其中,所述第二封装对象配置有sql语句生成规则;

调用单元,用于根据所述第二封装对象,依据所述sql语句和所述待处理的java对象调用springjdbc的应用程序接口,以与所述数据库进行交互,其中,所述第二封装对象还配置有接口调用规则。

在本实施例中,本实施例的数据交互装置可执行本发明实施例一提供的数据交互装置方法,其实现原理相类似,此处不再赘述。

本发明实施例通过预先设置第一封装对象,其中,第一封装对象中配置有名称转换规则,也即,针对任意一个待处理的java对象,均可以通过该第一封装对象自动完成相应类名和相应成员变量名的转换,得到相应的表名和字段名,而无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量代码来实现转换名称过程;另外,本方案还预先设置有第二封装对象,其中,第二封装对象中配置有sql语句生成规则和接口调用规则,也即,针对任意一个待处理的java对象,根据该第二封装对象均可以自动生成相应的sql语句,以及自动调用springjdbc的api,从而也无需开发人员针对每一个具体的java对象,将每一个具体的java对象作为参数自行编写大量sql语句的过程。因此,基于本方案,大大减少了开发人员的工作量,提高了开发效率,进而提高了数据交互效率。

图4为本发明实施例四提供的一种数据交互方法的结构示意图,在实施例三的基础上,如图4所示,所述装置还包括:

第二获取单元,用于获取待插入的java对象数组,其中,所述java对象数组中包括多个待插入的java对象;

插入单元,用于根据预设第三封装对象,将所述待插入的java对象数组插入到所述数据库中,其中,所述第三封装对象配置有批量插入规则。

进一步地,所述名称转换规则,包括:

在所述类名中的首个第一大写字母的前面添加下划线,以得到所述数据表名,其中,所述第一大写字母不是所述类名的首字母;

在每一个所述成员变量名中的首个第二大写字母的前面添加下划线,以得到与每一个所述成员变量名分别一一对应的字段名,其中,所述第二大写字母不是所述成员变量名的首字母。

进一步地,所述sql语句生成规则,包括:

根据所述数据表名、每一个所述字段名、以及每一个所述成员变量名一一对应的属性值,生成所述sql语句,其中,所述属性值为基于java反射机制获取的。

进一步地,若所述sql语句为表征进行查询操作的sql语句,则用于生成所述sql语句的属性值不能为空。

在本实施例中,本实施例的数据交互装置可执行本发明实施例二提供的数据交互方法,其实现原理相类似,此处不再赘述。

本发明实施例通过预先设置第三封装对象,从而只要获取到待插入的java对象数组就可以自动实现批量插入,优雅的实现批量插入操作,而需要开发人员每一次针对待插入的多个java对象,自行编写大量sql语句的过程。本方案基于第三封装对象简化了开发人员的编写工作量,进而大大提高了批量插入的效率。

图5为本发明实施例五提供的一种数据交互设备的结构示意图,包括:存储器501和处理器502。

所述存储器501,用于存储计算机程序。

其中,所述处理器502执行所述存储器501中的计算机程序,以实现任一实施例的提供的方法。

本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现任一实施例的提供的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1