一种可视化的基于SQL语句的代码生成方法及系统与流程

文档序号:31539823发布日期:2022-09-16 23:33阅读:709来源:国知局
一种可视化的基于SQL语句的代码生成方法及系统与流程
一种可视化的基于sql语句的代码生成方法及系统
技术领域
1.本发明涉及一种代码生成方法,更具体的说是涉及一种可视化的基于sql 语句的代码生成方法。


背景技术:

2.现代web应用程序的开发,一般都会基于稳定经过验证的通用框架以提高开发效率,例如基于java语言开发的web应用程序,常规都会选择springboot+mybatis框架。这样通用框架开发出的应用功能接口,往往都会存在大量的样板代码,往往两个接口之前除了查询条件或者参数不同之外,其它部分几乎完全一致。为了克服样本代码带来的额外的重复工作量,开发者一般会选择通过代码生成工具来基于配置生成重复的样本代码,提高效率。但传统的代码生成工具或者框架,一般是基于硬编码或者命令行进行生成逻辑交互的,没有提供可视化的操作界面,而且生成代码的灵活性比较差,一般只能基于单个数据表,生成标准的crud(增删改查)的相关逻辑代码,例如mybatis官方提供的mybatis generator。这种方式对于项目上大部分需要多表连接的复杂查询接口是无法适配的,开发人员仍然需要自行定制sql查询语句,然后逐级定制相关的业务实现代码,而且这类的查询接口在常规项目中的比例一般要远高于单表的简单查询。
3.因此现有的代码生成技术如前所述,一般仅能基于数据表生成简单的crud 功能代码,无法满足复杂灵活的业务查询(基于sql)的代码生成需求,且缺乏可视化的交互模式,降低了代码生成的易用性;另一种常见的基于sql模拟实现业务接口的技术,一般会在框架层进行封装对sql进行统一拦截实现,不会额外生成静态的可编辑的源码文件,但这样很难对业务逻辑进行扩展,例如某些需要sql+代码额外处理才能实现的逻辑,只能选择从头编写自身的实现逻辑,无法复用框架的能力。


技术实现要素:

4.针对现有技术存在的不足,本发明的目的在于提供一种可视化的web控制台,让开发人员基于web页面的交互模式,仅仅通过配置相关的sql语句以及动态参数,即可生成一系列完整的业务实现代码,直接提供给上层客户端进行使用。
5.为实现上述目的,本发明提供了如下技术方案:一种可视化的基于sql语句的代码生成方法,包括如下步骤:
6.步骤一,进行sql解析,将原始sql以及动态参数翻译为mybatis的dsl;
7.步骤二,通过sql执行的结果集元数据生成sql对应的结果集对应的dto对象;
8.步骤三,基于java的ast语法树分析以及环境感知能力,将预生成的代码的插入开发工程环境中的指定源文件或者生成新的源文件。
9.作为本发明的进一步改进,所述步骤一中进行sql解析的具体步骤如下:
10.步骤一一,输入工程配置相关sql以及参数;
11.步骤一二,选择工程中的sql的映射文件类,进行sql解析和增强,输出dsl,同时替
换动态参数并执行,获取sql的元数据。
12.作为本发明的进一步改进,所述步骤三基于java的ast语法树分析以及环境感知能力,将预生成的代码的插入开发工程环境中的指定源文件或者生成新的源文件的具体步骤如下:
13.步骤三一,对步骤一二中选择的sql映射文件类的ast进行分析;
14.步骤三二,在映射类源码中插入新的方法,确定方法的入参和出参;
15.步骤三三,基于环境感知能力,确定上层代码文件的位置;
16.步骤三四,判断上层代码文件是否存在,若存在则创建相关的依赖文件,若不存在基于ast解析插入新的方法;
17.步骤三五,完成代码生成。
18.本发明另一方面提供了一种系统,包括:
19.交互层,用于与用户进行人机交互;
20.代码生成引擎,用于对sql进行解析后生成代码;
21.配置持久层,用于配置模板和环境信息。
22.作为系统的进一步改进,所述交互层包括:
23.可视化ui模块,用于在外部显示器上显现出ui,以供用户查看。
24.作为系统的进一步改进,所述代码生成引擎包括:
25.sql解析器,用于解析sql;
26.代码环境感知模块,用于感知代码环境;
27.代码语法解析器,用于解析代码语法。
28.作为系统的进一步改进,所述配置持久层包括:
29.配置模板模块,用于配置模板;
30.环境信息模块,用于采集工程环境信息。
31.本发明的有益效果,通过步骤一至步骤三的设置,可以自动感知到宿主工程所在的目录位置,分层结构,数据库配置等信息,开发人员只需要配置关键的一些信息即可生成必要代码,避免了大量重复的配置工作。
附图说明
32.图1为本发明的可视化的基于sql语句的代码生成方法的流程图;
33.图2为应用方法的系统模块框图。
具体实施方式
34.下面将结合附图所给出的实施例对本发明做进一步的详述。
35.参照图1至2所示,本实施例的一种可视化的基于sql语句的代码生成方法,包括如下步骤:
36.步骤一,进行sql解析,将原始sql以及动态参数翻译为mybatis的dsl;
37.步骤二,通过sql执行的结果集元数据生成sql对应的结果集对应的dto对象;
38.步骤三,基于java的ast语法树分析以及环境感知能力,将预生成的代码的插入开发工程环境中的指定源文件或者生成新的源文件,通过步骤一至步骤三的设置,便可有效
的实现进行sql解析,然后根据sql解析和执行的结果自动化的生成代码了,避免了大量重复的配置工作。
39.作为改进的一种具体实施方式,所述步骤一中进行sql解析的具体步骤如下:
40.步骤一一,输入工程配置相关sql以及参数;
41.步骤一二,选择工程中的sql的映射文件类,进行sql解析和增强,输出dsl,同时替换动态参数并执行,获取sql的元数据,通过上述两个步骤的设置,便可有效的实现sql解析了,并且解析后生成dto对象了。
42.作为改进的一种具体实施方式,所述步骤三基于java的ast语法树分析以及环境感知能力,将预生成的代码的插入开发工程环境中的指定源文件或者生成新的源文件的具体步骤如下:
43.步骤三一,对步骤一二中选择的sql映射文件类的ast进行分析;
44.步骤三二,在映射类源码中插入新的方法,确定方法的入参和出参;
45.步骤三三,基于环境感知能力,确定上层代码文件的位置;
46.步骤三四,判断上层代码文件是否存在,若存在则创建相关的依赖文件,若不存在基于ast解析插入新的方法;
47.步骤三五,完成代码生成,通过上述步骤的设置,便可有效的实现生成新的代码,然后插入到文件中,并且如果相关代码文件已经存在,则自动进行基于语法分析的代码合并,否则创建出新的代码文件。
48.本实施例中另一方面提供了一种搭载上述方法的系统,包括:
49.交互层,用于与用户进行人机交互,所述交互层包括:可视化ui模块,用于在外部显示器上显现出ui,以供用户查看;
50.代码生成引擎,用于对sql进行解析后生成代码,所述代码生成引擎包括:sql 解析器,用于解析sql;代码环境感知模块,用于感知代码环境;代码语法解析器,用于解析代码语法;
51.配置持久层,用于配置模板和环境信息,所述配置持久层包括:配置模板模块,用于配置模板;环境信息模块,用于采集工程环境信息;整个系统以插件的形式嵌入到开发项目工程中,可独立启动。系统具备相应的环境感知能力,可以自动感知到宿主工程所在的目录位置,分层结构,数据库配置等信息,开发人员只需要配置关键的一些信息即可生成必要代码,避免了大量重复的配置工作,例如如果需要基于sql生成某个接口,只需要提供sql信息,sql映射文件的路径即可自动推导出service,controller文件的相关信息和路径,并自动按照相应的规范生成相应的接口和方法,如果相关代码文件已经存在,则自动进行基于语法分析的代码合并,否则创建出新的代码文件。
52.而本发明中sql的动态参数控制是基于成熟的mybatis语法,系统自动解析sql 中定义的动态参数,并将其转化为mybatis的dsl语法,从而实现生成代码的动态条件控制。例如:sql语句
[0053][0054]
被解析增强后
[0055][0056]
综上所述,本实施例的方法及系统,基于可视化的交互模式以标准sql语句为基础,生成开箱即用的多层业务逻辑代码,支持对现有源码文件的增量修改或者创建全新的源码文件。
[0057]
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1