CN106873974A - 智能代码生成引擎系统及方法 - Google Patents
智能代码生成引擎系统及方法 Download PDFInfo
- Publication number
- CN106873974A CN106873974A CN201611252983.3A CN201611252983A CN106873974A CN 106873974 A CN106873974 A CN 106873974A CN 201611252983 A CN201611252983 A CN 201611252983A CN 106873974 A CN106873974 A CN 106873974A
- Authority
- CN
- China
- Prior art keywords
- template
- beetl
- code
- database
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Abstract
本发明公开了一种智能代码生成引擎系统及方法,该系统包括数据库表查询展示配置模块、数据表详情查询模块和Beetl模板引擎模块;数据库表查询展示配置模块:用于查询数据库内所有表名,并提供可视化界面数据,给予用户进行后续操作使用;数据表详情查询模块:用于根据表名在数据库中查询表内容提供给模板引擎渲染数据;Beetl模板引擎模块:用于根据表名和表内容,加载和解析预先定制的Beetl模板,将表名和表内容渲染数据并生成代码文件。本发明可集成于项目中(可视化操作),也可单独使用,大大减少了软件开发人员的基础编码工作,进而提升软件开发人员的工作效率。
Description
技术领域
本发明主要针对计算机应用技术领域,具体目的是为在编程工作中提高个人的工作效率。
背景技术
在现今的IT领域,开发人员的工作压力越来越大,工作量也越来越多,很多非业务的基础功能也需要消耗时间去编写,这样就导致了时间和精力的低效使用。现有的代码自动生成方法多数采用文本文档模板替换特定字符的形式拿到文件流从而生成代码,这样必然导致模板编辑困难(变量的定义和替换赋值,固定文档结构格式的调整等)和代码生成效率的降低。
发明内容
针对上述现状,本发明提供了一种智能代码生成引擎及方法,可集成于项目中(可视化操作),也可单独使用,大大减少了软件开发人员的基础编码工作,进而提升软件开发人员的工作效率。
本发明一种智能代码生成引擎,其特殊之处在于,包括数据库表查询展示配置模块、数据表详情查询模块和Beetl模板引擎模块;
所述数据库表查询展示配置模块:用于查询数据库内所有表名,并提供可视化界面数据,给予用户进行后续操作使用;
所述数据表详情查询模块:用于根据所述表名在数据库中查询表列相关详细内容提供给模板引擎渲染数据;
所述Beetl模板引擎模块:用于根据所述表名和表中列相关详细内容,加载和解析预先定制的Beetl模板,将所述表名和表中列相关详细内容组装参数集合渲染模板数据并生成代码文件。
进一步地,所述预先定制的Beetl模板为本人现在使用的SSI框架下的代码模板,包括控制层模板、数据库映射关系配置层模板、实体类模板、服务层模板、前端页面层模板。采用此架构是为了更好的适应目前团队项目的开发使用(稳定性、灵活性等),也可以采用自己的框架结构,可灵活使用。
更进一步地,所述前端页面层模板包括添加功能模板、列表功能模板、修改功能模板和查看功能模板。此处前端的四种模板实现了基础的增、删、改、查功能,也可以根据自己所在项目的具体情况添加配置更多常用功能模块到模板文件。
更进一步地,所述服务层模板包括接口类模板和接口实现类模板,此处采用接口与业务实现分离的模式,目的是让代码更简洁易懂。
更进一步地,所述Beetl模板引擎模块(3)基于Beetl引擎实现,使用WebAppResourceLoader资源模板加载器,可以直接获取到渲染数据后的文件流,针对此文件流我们可以保存为对应的文件。
一种基于上述智能代码生成引擎系统的智能代码生成方法,其特殊之处在于,包括如下步骤:
1)在数据配置文件中修改智能代码生成引擎的配置信息;
2)在数据库表查询展示配置模块中选择需要生成代码的表名;
3)数据表详情查询模块根据所述表名查询表内容,并加载出表中所有的字段信息,勾选需要功能,形成功能项;
4)Beetl模板引擎模块根据表名和表内容中的功能项选取预先定制的Beetl模板,将所述表内容渲染数据并生成代码文件于配置文件中的指定路径。
优选地,所述步骤1)中的配置信息包括数据库连接地址;后台代码存放目录;后台代码存放包名;前端页面存放目录;作者姓名。此处采用配置文件可以灵活改变,既适应了集成此智能代码生成引擎于项目中(配置文件的修改无需重新启动项目),也适应了单独使用此智能代码生成引擎。
优选地,所述步骤3)中的表内容包括表的列名、列说明、列类型、精度、主键。可视化的界面使用户的操作更直观,易用性得到很大的改善。
本发明针对现有代码自动生成方法效率不高的缺陷,对确定了系统架构的系统,通过数据库中相应表的查询,包括字段和注释,从而自动生成含有最基础的增(templ_insert.html)、删(此功能点无模板)、改(templ_update.html)、查(列表:templ_select.html,详情:templ_view.html)功能的对应的模块代码,现在也将此技术做成可视化界面,便于开发人员操作,从而提高开发人员的工作效率,减少基础代码编写工作量,让开发人员有更多的精力专注于行业中的业务处理。
附图说明
图1为本发明智能代码生成引擎系统的结构示意图。
图2为本发明智能代码生成引擎系统的后台代码目录结构示意图。
图3为本发明智能代码生成引擎系统的前端代码目录结构示意图。
图4为本发明智能代码生成方法的基本流程图。
图5为本发明智能代码生成方法的配置数据源信息的示意图。
图6为本发明智能代码生成方法的生成代码的表名的示意图。
图7为本发明智能代码生成方法的选取列字段在列表页的查询匹配方式的示意图。
图8为本发明智能代码生成方法的选取列字段在新增、修改、查看页面的显示表单类型的示意图。
图9为本发明智能代码生成引擎系统的整个可视化视图界面的示意图。
图中:数据库表查询展示配置模块1,数据表详情查询模块2,Beetl模板引擎模块3,数据库4。
具体实施方式
以下结合附图和具体实施例对本发明作进一步的详细描述。
本技术方案中模板配置的前提是确定整个系统架构。如图1所示,本发明一种智能代码生成引擎系统,包括数据库表查询展示配置模块1、数据表详情查询模块2和Beetl模板引擎模块3。
数据库表查询展示配置模块1:用于查询数据库4内所有表名,并提供可视化界面数据,给予用户进行后续操作使用。
数据表详情查询模块2:用于根据表名在数据库4中查询表内容提供给模板引擎渲染数据。表内容包括表的列名、列说明、列类型、精度、主键等。
Beetl模板引擎模块3:用于根据表名和表内容,加载和解析预先定制的Beetl模板,用组装好的数据集合(表名和表内容)对模板进行渲染数据并生成代码文件。Beetl模板引擎模块3基于Beetl-Java模板引擎实现。Beet模板引擎是一种类似JS语法和使用习惯以.btl结尾的文件模板,由于Beetl具有的高性能、高可靠性、高易用性等优点,因此本发明采用Beetl-Java模板引擎。
Beetl模板是基于已有的代码,根据自己的代码风格以及框架的结构调整的模板信息,Beetl模板提供有四种资源模板加载器,并且支持自定义资源模板加载器,此处选用的是WebAppResourceLoader资源模板加载器,Java代码调用函数简单,可以在模板文件中定义变量,且变量的赋值仅需放入绑定数据的Map集合中,与JSTL表达式使用规则类似,此处减少了重新学习新语法规则的成本,现有的代码生成工具几乎没有使用模板引擎,导致到生成代码的时候对系统资源消耗较多,且不能灵活的变更模板,因此代码生成的效率和通用性大打折扣,此处选用Beetl模板作为代码的模板文件就是为了解决这一问题,无论你的项目使用什么技术架构,只要有一个完整的样例,就能轻易的编写出模板文件,底层查询的数据已经封装出几乎所有的表相关信息的实体类,在模板文件中变量赋值就变的轻而易举,从而大大提升开发人员的工作效率。
预先定制的Beetl模板为SSI框架下的代码模板,包括控制层模板(templ_controller.btl)、数据库映射关系配置层模板(templ_ibatis.btl)、实体类模板(templ_entity.btl)、服务层模板(templ_service.btl/templ_serviceImpl.btl)、前端页面层模板(templ_select.btl/templ_insert.btl/templ_update.btl/templ_view.btl)。模板文件中的包名、类名、页面路径、字段说明等等均需要使用变量,以便模板引擎加载模板渲染数据。后台代码目录结构如图2所示。
前端页面层模板包括添加功能模板(templ_insert.btl)、列表功能模板(templ_select.btl)、修改功能模板(templ_update.btl)和查看功能模板(templ_view.btl)。前端代码目录结构如图3所示
服务层模板包括接口类模板(templ_service.btl)和接口实现类模板(templ_serviceImpl.btl)。
如图4所示,一种基于上述智能代码生成引擎系统的智能代码生成方法,包括如下步骤:
1)配置数据源信息,包括连接的数据库驱动、数据库连接URL、用户名、密码、后台代码存放目录、后台代码存放包名、前端页面存放目录以及作者姓名,如附图5所示。
2)在数据库表查询展示配置模块1中选择需要生成代码的表名供使用者下拉选取找到需要生成代码的数据表,如图6所示。
3)数据表详情查询模块2根据选取需要生成代码的数据库表的表名查询表内容,并加载出表中所有的字段信息,根据可视化界面提供的信息在后需要配置如下几项:
a)勾选列字段是否在列表页中显示。
b)勾选列字段是否为列表页的查询条件。
c)选取列字段在列表页的查询匹配方式(如“=”、“!=”、“>=”、“>”、“<”、“<=”、“like”、“between”等,如图7所示)。
d)选取列字段在新增、修改、查看页面的显示表单类型(单行文本、多行文本、富文本、下拉选项、单选、多选等,如图8所示)。
e)选取列字段关联字典名称(如民族、性别等字典表)。
4)Beetl模板引擎模块3根据表名和表内容中的功能项选取预先定制的Beetl模板,将表内容组装数据集合后对相应的模板文件渲染数据并生成代码文件返回文件流,再根据配置文件中指定的文件路径保存文件。
整个可视化视图界面如图9所示。
以上结合最佳实施例对本发明进行了描述,但本发明并不局限于以上揭示的实施例,而应当涵盖各种根据本发明的本质进行的修改、等效组合。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种智能代码生成引擎系统,其特征在于:数据库表查询展示配置模块(1)、数据表详情查询模块(2)和Beetl模板引擎模块(3);
所述数据库表查询展示配置模块(1):用于查询数据库(4)内所有表名,并提供可视化界面数据,给予用户进行后续操作使用;
所述数据表详情查询模块(2):用于根据所述表名在数据库(4)中查询表内容提供给模板引擎渲染数据;
所述Beetl模板引擎模块(3):用于根据所述表名和表内容,加载和解析预先定制的Beetl模板,将所述表名和表内容渲染数据并生成代码文件。
2.根据权利要求1所述的智能代码生成引擎系统,其特征在于:所述预先定制的Beetl模板为SSI框架下的代码模板,包括控制层模板、数据库映射关系配置层模板、实体类模板、服务层模板、前端页面层模板、框架代码模板。
3.根据权利要求2所述的智能代码生成引擎系统,其特征在于:所述前端页面层模板包括添加功能模板、列表功能模板、修改功能模板和查看功能模板。
4.根据权利要求2所述的智能代码生成引擎系统,其特征在于:所述服务层模板包括接口类模板和接口实现类模板。
5.根据权利要求2所述的智能代码生成引擎系统,其特征在于:所述Beetl模板引擎模块(3)基于Beetl-Java模板引擎实现,使用WebAppResourceLoader资源模板加载器。
6.根据权利要求1~5中任一权利要求所述的智能代码生成引擎系统的智能代码生成方法,其特征在于:包括如下步骤:
1)在数据库表查询展示配置模块(1)中修改配置信息;
2)在数据库表查询展示配置模块(1)中选择需要生成代码的表名;
3)数据表详情查询模块(2)根据所述表名查询表内容,并加载出表中所有的字段信息,勾选需要功能,形成功能项;
4)Beetl模板引擎模块(3)根据表名和表内容中的功能项选取预先定制的Beetl模板,将所述表内容渲染数据并生成代码文件于配置文件中的指定路径。
7.根据权利要求6所述的智能代码生成方法,其特征在于:所述步骤1)中的配置信息包括数据库连接地址;后台代码存放目录;后台天代码存放包名;前端页面存放目录;作者姓名。
8.根据权利要求6所述的智能代码生成方法,其特征在于:所述步骤3)中的表内容包括表的列名、列说明、列类型、精度、主键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252983.3A CN106873974A (zh) | 2016-12-30 | 2016-12-30 | 智能代码生成引擎系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252983.3A CN106873974A (zh) | 2016-12-30 | 2016-12-30 | 智能代码生成引擎系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106873974A true CN106873974A (zh) | 2017-06-20 |
Family
ID=59165024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611252983.3A Pending CN106873974A (zh) | 2016-12-30 | 2016-12-30 | 智能代码生成引擎系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106873974A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
CN107608669A (zh) * | 2017-08-15 | 2018-01-19 | 山西云度知识产权服务有限公司 | 一种基于数据库表结构自动生成功能及页面的方法 |
CN108509199A (zh) * | 2018-03-09 | 2018-09-07 | 平安科技(深圳)有限公司 | 自动生成中文注释的方法、装置、设备及存储介质 |
CN109116828A (zh) * | 2017-06-22 | 2019-01-01 | 中兴通讯股份有限公司 | 一种控制器中模型代码配置方法和装置 |
CN109634593A (zh) * | 2018-04-17 | 2019-04-16 | 广东电网有限责任公司 | 一种代码自动生成方法 |
CN109634596A (zh) * | 2018-12-11 | 2019-04-16 | 清华大学 | 基于流程图的可视化编程工具 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN111488164A (zh) * | 2020-04-10 | 2020-08-04 | 北京杰软科技有限公司 | 智能表单系统及其代码与界面生成方法 |
CN113094039A (zh) * | 2021-04-12 | 2021-07-09 | 中国兵器装备集团自动化研究所有限公司 | 一种基于数据库表的代码自动生成系统 |
CN113703755A (zh) * | 2021-08-04 | 2021-11-26 | 深圳市蜜蜂互联网络科技有限公司 | 代码生成方法及代码生成装置 |
WO2022100032A1 (zh) * | 2020-11-10 | 2022-05-19 | 平安普惠企业管理有限公司 | 系统分析可视化方法、装置、电子设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591654A (zh) * | 2011-12-28 | 2012-07-18 | 方正国际软件有限公司 | 一种基于ssh架构的代码生成器及方法 |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
CN104317576A (zh) * | 2014-07-04 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于eclipse的代码自动生成方法及系统 |
-
2016
- 2016-12-30 CN CN201611252983.3A patent/CN106873974A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN102591654A (zh) * | 2011-12-28 | 2012-07-18 | 方正国际软件有限公司 | 一种基于ssh架构的代码生成器及方法 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
CN104317576A (zh) * | 2014-07-04 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于eclipse的代码自动生成方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109116828A (zh) * | 2017-06-22 | 2019-01-01 | 中兴通讯股份有限公司 | 一种控制器中模型代码配置方法和装置 |
CN109116828B (zh) * | 2017-06-22 | 2023-03-17 | 中兴通讯股份有限公司 | 一种控制器中模型代码配置方法和装置 |
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
CN107608669A (zh) * | 2017-08-15 | 2018-01-19 | 山西云度知识产权服务有限公司 | 一种基于数据库表结构自动生成功能及页面的方法 |
CN108509199A (zh) * | 2018-03-09 | 2018-09-07 | 平安科技(深圳)有限公司 | 自动生成中文注释的方法、装置、设备及存储介质 |
CN109634593A (zh) * | 2018-04-17 | 2019-04-16 | 广东电网有限责任公司 | 一种代码自动生成方法 |
CN109634596A (zh) * | 2018-12-11 | 2019-04-16 | 清华大学 | 基于流程图的可视化编程工具 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN111488164A (zh) * | 2020-04-10 | 2020-08-04 | 北京杰软科技有限公司 | 智能表单系统及其代码与界面生成方法 |
WO2022100032A1 (zh) * | 2020-11-10 | 2022-05-19 | 平安普惠企业管理有限公司 | 系统分析可视化方法、装置、电子设备及计算机可读存储介质 |
CN113094039A (zh) * | 2021-04-12 | 2021-07-09 | 中国兵器装备集团自动化研究所有限公司 | 一种基于数据库表的代码自动生成系统 |
CN113703755A (zh) * | 2021-08-04 | 2021-11-26 | 深圳市蜜蜂互联网络科技有限公司 | 代码生成方法及代码生成装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106873974A (zh) | 智能代码生成引擎系统及方法 | |
CN109101652B (zh) | 一种标签创建和管理系统 | |
CN106528129B (zh) | 一种Web应用界面生成系统及方法 | |
CN103226478B (zh) | 一种自动生成并使用代码的方法 | |
CN101697120B (zh) | 基于关系型数据库的j2ee代码生成方法 | |
CN103383645B (zh) | 代码生成方法及系统 | |
CN102663103B (zh) | 可配置的自动化生成数据库和数据访问的方法 | |
CN110825369A (zh) | 一种基于java语言的代码自动生成的方法 | |
CN107678736A (zh) | 一种业务页面模板的展现方法、系统及计算机装置 | |
CN103853543B (zh) | 一种应用于企业信息系统开发过程中快速构建表单的方法 | |
CN101271475B (zh) | 一种商业智能系统 | |
CN105956830A (zh) | 一种基于j2ee框架的企业级可视化应用开发平台 | |
CN103020158A (zh) | 一种报表创建方法、装置和系统 | |
CN106445536B (zh) | 自动化业务设计管理系统 | |
CN102841889A (zh) | 一种基于orm架构的高效数据库访问的实现方法及装置 | |
CN110069246A (zh) | 一种Java Web应用快速开发的平台系统及其应用 | |
CN102646040B (zh) | 基于功件和功件树的软件生成方法及装置 | |
CN107122173A (zh) | 一种适配activiti、可拖拽的表单生成方法 | |
CN103425778A (zh) | 一种数据库应用系统的智能化开发平台 | |
CN102222278A (zh) | 一种运维流程定制的方法及装置 | |
CN103903086A (zh) | 一种基于业务模型驱动的管理信息系统开发方法及系统 | |
CN103049251A (zh) | 一种数据库持久层装置及数据库操作方法 | |
CN107291471A (zh) | 一种支持可定制化数据采集的元模型框架系统 | |
CN111124405A (zh) | 一种支持前后端解耦的在线表单设计的实现方法及系统 | |
CN108228762B (zh) | 用于配置主数据库通用模板的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170620 |
|
RJ01 | Rejection of invention patent application after publication |