一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于业务方法的动态SQL的生成方法及装置与流程

2022-02-19 07:53:11 来源:中国专利 TAG:

基于业务方法的动态sql的生成方法及装置
技术领域
1.本公开涉及计算机技术领域,尤其涉及基于业务方法的动态sql的生成方法及装置。


背景技术:

2.目前常用的sql框架主要是以mybatis为代表的框架,基于mybati框架的开发过程中,存在较多的问题,主要包括以下几点:
3.(1)配置复杂。基于每个业务方法需要独立的sql配置,配置存在在独立的xml中,大量的xml需要维护,造成时间与资源的浪费。
4.(2)功能简单。基本上都是通过模板语言生成sql,缺少开发过程的功能支持,例如:查询过程分页、插入过程主键生成等。
5.(3)配置的sql与业务脱节,增加了代码理解的困难,不具备可读性。


技术实现要素:

6.本公开针对上述问题,提出基于业务方法的动态sql的生成方法及装置。
7.为了解决上述技术问题中的至少一个,本公开提出如下技术方案:
8.第一方面,提供了基于业务方法的动态sql的生成方法,包括以下步骤:
9.接收调用方的调用请求,调用相应的业务方法;
10.识别业务方法对应的sql拦截器;
11.根据预先定义的字段合法性要求,对业务方法的输入参数对应的字段进行合法性校验;
12.执行业务方法中的业务代码,生成业务代码执行结果;
13.根据业务代码执行结果以及当前业务方法对应的业务要求完成sql拼装和sql参数拼装;
14.根据拼装后的sql和sql参数执行sql;
15.根据sql执行结果,完成sql中返回对象的组装,并将组装的结果返回调用方。
16.第二方面,提供了基于业务方法的动态sql的生成装置,用于执行上述任一基于业务方法的动态sql的生成方法,包括:
17.业务方法调用模块,用于接收调用方的调用请求,调用相应的业务方法;
18.拦截器识别模块,用于识别业务方法对应的sql拦截器;
19.参数合法性校验模块,用于根据预先定义的字段合法性要求,对业务方法的输入参数进行合法性校验;
20.业务代码执行模块,用于执行业务方法中的业务代码,生成业务代码执行结果;
21.sql拼装模块,用于根据业务代码执行结果以及当前业务方法对应的业务要求完成sql拼装和sql参数拼装;
22.sql执行模块,用于根据拼装后的sql和sql参数执行sql;和
23.对象组装模块,用于根据sql执行结果,完成sql中返回对象的组装,并将组装的结果返回调用方。
24.本公开的有益效果是,通过建立业务方法属性与sql字段之间的映射,使开发者只需要关注业务方法的编写,即可自动完成sql的拼装、sql参数赋值以及sql执行,提升开发效率,同时使代码更容易理解,提高了代码的可读性。
25.另外,在本公开技术方案中,凡未作特别说明的,均可通过采用本领域中的常规手段来实现本技术方案。
附图说明
26.为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法的流程图。
28.图2示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,在用户管理过程中实现新增用户操作的业务方法。
29.图3示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,在用户管理过程中实现修改用户密码操作的业务方法。
30.图4示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,在用户管理过程中实现查询用户操作的业务方法。
31.图5示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,在用户管理过程中实现删除用户操作的业务方法。
32.图6示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,使用多重拦截器的业务方法。
33.图7示出了本公开一个实施例提供的基于业务方法的动态sql的生成方法中,实现列自增的业务代码。
34.图8示出了本公开另一个实施例提供的基于业务方法的动态sql的生成装置的结构示意图。
具体实施方式
35.为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例是本公开一部分实施例,而不是全部的实施例,仅用以解释本公开,并不用于限定本公开。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
36.需要说明的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备
固有的其他步骤或单元。
37.实施例1:
38.参考说明书附图1,示出了本技术一个实施例提供的基于业务方法的动态sql的生成方法,该方法可以包括以下步骤:
39.步骤1:接收调用方的调用请求,调用相应的业务方法;
40.步骤2:识别业务方法对应的sql拦截器;
41.步骤3:根据预先定义的字段合法性要求,对业务方法的输入参数对应的字段进行合法性校验;
42.步骤4:执行业务方法中的业务代码,生成业务代码执行结果;
43.步骤5:根据业务代码执行结果以及当前业务方法对应的业务要求完成sql拼装和sql参数拼装;
44.步骤6:根据拼装后的sql和sql参数执行sql;
45.步骤7:根据sql执行结果,完成sql中返回对象的组装,并将组装的结果返回调用方。
46.在步骤1中,调用方可以是controller(控制层),调用方通过容器获取service(业务层)的业务组件实例,业务组件根据调用方的实际业务要求,例如新增用户、修改用户密码等,调用相应的业务方法,业务方法中包含能够实现业务逻辑的业务代码。
47.在可选的实施例中,业务方法中包括即将处理的sql拦截器、需要操作的数据实体、输入参数的合法性、输入参数的字段、输入参数的值以及对输入参数的合法修改规则。
48.在步骤3中,对业务方法的输入参数对应的字段进行合法性校验的内容可以包括,字段是否必需、字段的最大值、字段的最小值、字段的最大长度、字段的定长长度、基于正则表达式的字符串规范和枚举等。
49.在步骤3中,根据预先定义的字段合法性要求,对业务方法的输入参数对应的字段进行合法性校验包括,
50.接收业务方法中的输入参数;
51.获取输入参数的待校验字段;
52.按照预先定义的字段合法性要求,对待校验字段进行校验。
53.在步骤4中,业务代码执行结果可以包括对输入参数的合法修改结果。
54.在业务系统中,最常见的是数据库操作语言(dml),基本的四种操作有:插入(insert)、更新(update)、查询(select)和删除(delete)。通过设置以上操作过程中sql需要的参数与业务方法中各参数之间的映射关系,即可根据业务方法获得sql。
55.例如,在insert语句中,sql需要的参数是字段和值,在update语句中,sql需要的参数是where条件和修改字段,在select语句和delete语句中,sql需要的参数是where条件。
56.以更新过程的实现为例,业务方法中,@param中的tag属性为空时,则作为更新字段,当tag为=、>、<、in、between等条件语句时则作为条件字段,如果有主键字段出现作为条件字段,而无需指定tag。由此,采用声明式语法实现业务方法中属性与sql字段之间的映射。
57.参考说明书附图2至5,示出了用户管理过程中新增用户、修改用户密码、查询用户
和删除用户四种操作对应的业务方法,以下分别对四种业务方法及其与sql的对应关系进行说明。
58.参考说明书附图2,示出了用户管理过程中新增用户的业务方法。其中,@daocreate声明该业务方法对应的sql拦截器,entity指定需要操作的数据实体(表),@param声明了该业务方法中输入参数对应的字段(例如user.username),即sql的value属性,@param还声明了该业务方法中输入参数的合法性(例如required=true),string username等既是输入参数的值,也是对应的sql的value内容;业务代码执行后返回内容将对输入参数的值进行修改,如password使用md5加密存储以及create_date的初始化等;sql的返回对象是user。
59.参考说明书附图3,示出了用户管理过程中修改用户密码的业务方法。其中,@daoupdate声明该业务方法对应的sql拦截器,entity指定需要操作的数据实体(表),在该示例中,user_id作为主键字段识别为where条件,在可能的实施例中,也可以指定其他字段作为where条件,业务代码执行后返回内容将对输入参数的值进行修改,如password使用md5加密处理;返回内容将用于执行sql。
60.参考说明书附图4,示出了用户管理过程中查询用户的业务方法。其中,@daoquery声明该业务方法对应的sql拦截器,entity指定需要操作的数据实体(表),所有非空字段均可以作为where条件,默认条件为等于,其他条件可以根据tag进行指定,如like可实现模糊查询;pageable指定查询翻页,modelclass指定返回映射对象;通过指定翻页参数即可以实现自动翻页;sql的返回对象是queryresult<user>。
61.参考说明书附图5,示出了用户管理过程中删除用户的业务方法。其中,@daoremove声明该业务方法对应的sql拦截器,entity指定需要操作的数据实体(表);所有输入参数均识别为where条件。
62.在可选的实施例中,在实现修改过程的业务方法中,可以修改行数监控。例如,在根据主键修改时,期望修改影响的行数可设置为等于1,否则即可判定修改失败。
63.在可选的实施例中,当一个业务方法中存在多个数据库操作时,可约束在一个事务中执行,从而实现多重拦截器的功能叠加。参考说明书附图6,示出了一种使用多重拦截器的业务方法,其中示出了@transaction和@daoupdate的复用,即update的方法体中还存在其他数据库的操作,通过@transaction约束在一个事务中进行。
64.在可选的实施例中,实现插入过程的业务方法中,可以通过设置对象的元数据,指定主键和逐渐生成器,进而实现列自增模式。参考说明书附图7,指定user_id为主键,因此在说明书附图2所示的新增用户的业务方法中,无需指定主键user_id,即可实现主键列自增。
65.在可选的实施例中,实现插入过程的业务方法中,还可以通过调用其他主键生成器,完成主键生成。具体的,使主键字段作为daocreate方法的一个输入字段,在方法体中调用其他主键生成器(例如uuid),完成主键生成并赋值。
66.在可选的实施例中,步骤5中,根据业务代码执行结果以及当前业务方法对应的业务要求完成sql拼装和sql参数拼装后,将拼装完成的sql缓存在内容中,在之后相同的业务方法执行时,只需对sql参数进行替换,即可进行sql的执行,进一步提高效率,节约开发资源与开发时间。
67.在可选的实施例中,步骤5中的业务要求为当前业务方法对应的业务要求,例如修改用户密码、删除用户等。
68.在可选的实施例中,步骤5中sql的拼装和步骤6中sql的执行均采用aop技术实现。
69.在本实施例中,通过建立业务方法属性与sql字段之间的映射,使开发者只需要关注业务方法的编写,即可自动完成sql的拼装、sql参数赋值及sql执行,提高了开发效率;同时使代码更容易理解,提高了代码的可读性;通过对业务代码的编写,可根据实际需要添加功能设置,提高数据灵活性。
70.实施例2:
71.参考说明书附图8,示出了本技术一实施例提供的基于业务方法的动态sql的生成装置,用于执行上述任一基于业务方法的动态sql的生成方法,包括:
72.业务方法调用模块11,用于接收调用方的调用请求,调用相应的业务方法;
73.拦截器识别模块12,用于识别业务方法对应的sql拦截器;
74.参数合法性校验模块13,用于根据预先定义的字段合法性要求,对业务方法的输入参数进行合法性校验;
75.业务代码执行模块14,用于执行业务方法中的业务代码,并生成业务代码执行结果;
76.sql拼装模块15,用于根据业务代码执行结果以及当前业务方法对应的业务要求完成sql拼装和sql参数拼装;
77.sql执行模块16,用于根据拼装后的sql和sql参数执行sql;和
78.对象组装模块17,用于根据sql执行结果,完成sql中返回对象的组装,并将组装的结果返回调用方。
79.在可选的实施例中,业务方法中包括即将处理的sql拦截器、需要操作的数据实体、输入参数的合法性、输入参数的字段、输入参数的值以及对输入参数的合法修改规则。
80.在可选的实施例中,在参数合法性校验模块中,根据预先定义的字段合法性要求,对业务方法的输入参数对应的字段进行合法性校验包括,
81.接收业务方法中的输入参数;
82.获取输入参数的待校验字段;
83.按照预先定义的字段合法性要求,对待校验字段进行校验。
84.在可选的实施例中,业务代码执行结果中包括对输入参数的合法修改结果。
85.在本实施例中,通过建立业务方法属性与sql字段之间的映射,使开发者只需要关注业务方法的编写,即可自动完成sql的拼装、sql参数赋值及sql执行,提高了开发效率;同时使代码更容易理解,提高了代码的可读性;通过对业务代码的编写,可根据实际需要添加功能设置,提高数据灵活性。
86.需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
87.本说明书实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对说明书
特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
88.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
89.以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献