一种基于Mybatis框架分离及运行HQL的方法技术

技术编号:30044753 阅读:21 留言:0更新日期:2021-09-15 10:45
本发明专利技术公开了一种基于Mybatis框架分离及运行HQL的方法,包括将要编写的HQL语句,事先按照Mybatis框架XML语法规范写入到xml文件中;每条HQL语句在xml文件中都会有一个唯一的ID,即HQL_ID;在需要某条HQL语句时,使用指定的HQL_ID调用Mybatis框架的API,Mybatis框架通过其内部的xml解析引擎将xml文件中ID为HQL_ID的HQL语句和该HQL语句中所需要的参数名按顺序解析出来;根据参数值映射表将解析出的参数名按照顺序转换为参数值,并依次添加入参数值列表中;将获取的HQL语句和相应的参数值列表作为API参数,调用Hibernate框架的API完成该HQL语句的运行。优点是:避免了直接在源代码中编写HQL语句导致的源代码可读取性下降的问题,同时也避免了对于HQL语句的问题修复需要重新对源代码进行编译、打包、部署的问题。部署的问题。部署的问题。

【技术实现步骤摘要】
一种基于Mybatis框架分离及运行HQL的方法


[0001]本专利技术涉及java开发
,尤其涉及一种基于Mybatis框架分离及运行HQL的方法。

技术介绍

[0002]HQL全称为Hibernate Query Language,是Hiberate框架所使用的特有的对象导航模型数据库查询语言。
[0003]在使用Hiberante框架时,需要将HQL编写在java源文件(以下简称“源代码”)中,再调用Hibernate的API才可以运行。这样就导致了源代码中存在大量的HQL语句,如果最终的HQL语句还需要根据查询条件的不同而做出不同调整时,源代码中也会出现大量的if

else的分支判断语句,用来拼接出最终的HQL语句(以下简称“动态拼接”)。这大大降低了代码的可读性,导致开发者的注意力会被这些HQL语句分散,不能专心聚焦于业务代码,并随着软件功能的增多,此种情况也会愈发严重,使得开发和维护成本也越来越高。
[0004]由于HQL是编写在源代码中的,当HQL语句出现问题需要修复时,则必须修改源代码,然后重新对源代码进行编译、打包、部署才可以完成问题修复。如果在没有源代码的情况下,将很难修复这些问题。

技术实现思路

[0005]本专利技术的目的在于提供一种基于Mybatis框架分离及运行HQL的方法,从而解决现有技术中存在的前述问题。
[0006]为了实现上述目的,本专利技术采用的技术方案如下:
[0007]一种基于Mybatis框架分离及运行HQL的方法,包括如下步骤,
[0008]S1、将要编写的HQL语句,事先按照Mybatis框架XML语法规范写入到xml文件中;每条HQL语句在xml文件中都会有一个唯一的ID,即HQL_ID;
[0009]S2、在需要某条HQL语句时,使用指定的HQL_ID调用Mybatis框架的API,Mybatis框架通过其内部的xml解析引擎将事先编写在xml文件中ID为HQL_ID的HQL语句和该HQL语句中所需要的参数名按顺序解析出来;
[0010]S3、根据参数值映射表将步骤S2中解析出的参数名按照顺序转换为参数值,并将参数值依次添加入参数值列表中;
[0011]S4、将获取的HQL语句和相应的参数值列表作为API参数,调用Hibernate框架的API完成该HQL语句的运行。
[0012]本专利技术的有益效果是:1、由于没有直接在源代码中编写HQL语句,仅仅只是使用一个HQL_ID来代替,所以不会存在源代码中出现大量HQL语句及动态拼接的过程的情况,开发者可以更加专注于业务代码的开发和维护。2、由于HQL语句是编写在xml文件中的,而xml文件是不需要进行编译即可使用的,当出现了HQL语句出现问题时,只需要修改xml文件中的HQL语句,重新启动服务既可,不需要进行源代码的重新编译、打包、部署的过程,因此即使
在没有源代码的情况下,仍然可以非常方便的修复HQL语句问题。
附图说明
[0013]图1是本专利技术实施例中方法中所涉及的组成架构;
[0014]图2是本专利技术实施例中方法的原理流程图;
[0015]图3是本专利技术实施例中步骤S1的执行代码;
[0016]图4是本专利技术实施例中步骤S2的执行代码;
[0017]图5是本专利技术实施例中步骤S3的执行代码;
[0018]图6是本专利技术实施例中将HQL语句和参数值列表作为API参数的执行代码;
[0019]图7是本专利技术实施例中调用Hibernate的API完成HQL的运行的执行代码;
[0020]图8是本专利技术实施例中传统的直接在源代码中编写HQL的示意图;
[0021]图9是本专利技术实施例中使用本专利技术方法改进以后的源代码示意图。
具体实施方式
[0022]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不用于限定本专利技术。
[0023]如图1和图2所示,本实施例中,提供了一种基于Mybatis框架分离及运行HQL的方法,包括如下步骤,
[0024]S1、将要编写的HQL语句,事先按照Mybatis框架XML语法规范写入到xml文件中;每条HQL语句在xml文件中都会有一个唯一的ID,即HQL_ID;
[0025]S2、在需要某条HQL语句时,使用指定的HQL_ID调用Mybatis框架的API,Mybatis框架通过其内部的xml解析引擎将事先编写在xml文件中ID为HQL_ID的HQL语句和该HQL语句中所需要的参数名按顺序解析出来;
[0026]S3、根据参数值映射表将步骤S2中解析出的参数名按照顺序转换为参数值,并将参数值依次添加入参数值列表中;
[0027]S4、将获取的HQL语句和相应的参数值列表作为API参数,调用Hibernate框架的API完成该HQL语句的运行。
[0028]本实施例中,步骤S2中,对于需要动态拼接的HQL语句,使用Mybatis框架提供的动态SQL功能完成,每条HQL语句在xml文件中都会有一个唯一的ID,即HQL_ID。
[0029]本实施例中,本专利技术提供的方法是基于Mybatis框架所具有的xml文件解析的功能,将其作为HQL语句的存储介质,在使用时将存放于xml文件中的HQL使用Mybatis框架解析出来,通过一定的组装,形成Hibernate框架所需要的HQL语句运行参数,以进行运行。从而避免了直接在源代码中编写HQL语句导致的源代码可读取性下降的问题,同时也避免了对于HQL语句的问题修复需要重新对源代码进行编译、打包、部署的问题。
[0030]实施例二
[0031]本实施例中,结合具体的操作实例,具体说明本专利技术提供的方法的执行过程。
[0032]场景:根据用户名(username)和年龄(age)和性别(gender)三种属性精确查询用户信息(User),如果某个属性没有值,则不对该属性进行过滤。
[0033]1、首先将HQL语句写入xml文件中;如图3所示;
[0034]2、调用Mybatis框架的API,将事先编写在xml文件中ID为IUserService.findUser的HQL语句和HQL语句中所需要的参数名按顺序解析出来;如图4所示;
[0035]3、根据接收到的参数值映射表将参数名按照顺序转换为参数值,并依次添加入参数值列表;如图5所示;
[0036]4、将得到的HQL语句和有顺序的参数值列表作为API参数,调用Hibernate的API完成HQL的运行;如图6和图7所示;
[0037]图8和图9为源代码效果对比图,其中,图8为传统的直接在源代码中编写HQL的示例,图9为使用本专利技术改进以后的源代码示例图,对比之后可以看出,随着HQL语句越来越多,越来越复杂,图8中的源代码就会有越来越多的拼接HQL的代码,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Mybatis框架分离及运行HQL的方法,其特征在于:包括如下步骤,S1、将要编写的HQL语句,事先按照Mybatis框架XML语法规范写入到xml文件中;每条HQL语句在xml文件中都会有一个唯一的ID,即HQL_ID;S2、在需要某条HQL语句时,使用指定的HQL_ID调用Mybatis框架的API,Mybatis框架通过其内部的...

【专利技术属性】
技术研发人员:张志远刘伟成
申请(专利权)人:北京同创永益科技发展有限公司
类型:发明
国别省市:

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

1