CN106126564A - 一种基于动态模板语言渲染的方法 - Google Patents
一种基于动态模板语言渲染的方法 Download PDFInfo
- Publication number
- CN106126564A CN106126564A CN201610431674.6A CN201610431674A CN106126564A CN 106126564 A CN106126564 A CN 106126564A CN 201610431674 A CN201610431674 A CN 201610431674A CN 106126564 A CN106126564 A CN 106126564A
- Authority
- CN
- China
- Prior art keywords
- xml
- definition
- template
- file
- sql syntax
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于动态模板语言渲染的方法。本发明包括如下步骤:(1):定义常用方法集合的模板,使用Velocity引擎的以vm格式保存,使用Freemarker引擎以ftl格式保存;(2):定义XML结构定义文件xsd,该文件用于描述XML文档的结构,用来检验XML文档的合法性;(3):定义SQL语法的XML配置文件,具体的:根据步骤2的结构定义文件,在XML中配置常用的SQL语法,可引用步骤1中定义的模板中的一个或多个常用方法;(4):加载XML配置文件,***代码根据XML配置文件中动态解析出SQL语法,然后根据SQL语法,同时配合jdbcTemplate对数据库进行操作。本发明中通过将重复书写的SQL逻辑配置成XML文件,并且提供了常用的模板方法,让开发人员快速编码,提高开发效率,另一方便也有助于代码的统一管理,提升软件质量。
Description
技术领域
本发明属于计算机技术研究领域,创造的一种基于动态模板语言渲染的方法。
背景技术
随着社会的发展,社会对信息化的要求越来越重视,软件开发迭代的速度也因此变得越来越快,这就要求软件开发公司投入更多的人力物力来适应高速发展的节奏。根据传统的研发方法,开发人员花费大量的时间用于编码,并且很大一部分是一些重复代码的编写。本方法使用多种模板引擎基于配置的方式动态生成SQL语法,并将大量重复使用的逻辑封装成可调用的方法,大大加快软件开发者的编码速度,从而提高开发人员的工作效率,这也使得软件开发的周期能显著缩短。同时开发人员可以有更多的时间将工作重心放在更加需要重视的软件设计上,有助于软件质量的提升。
发明内容
本发明的目的是针对项目需要书写大量静态的SQL语法,影响项目开发进度,衍生出的一种基于动态模板语言渲染的方法。
本发明解决其技术问题所采用的技术方案包括如下具体步骤:
步骤(1):定义常用方法集合的模板,使用Velocity引擎的以vm格式保存,使用Freemarker引擎以ftl格式保存;
所述的常用方法包括:in参数的拼接方法、批量***语法的生成方法等。
所述的常用方法集合的模板的定义:将使用率频繁的语法结合模板语言抽取出可供调用的方法;
步骤(2):定义XML结构定义文件xsd,该文件主要描述XML文档的结构,用来检验XML文档的合法性。
步骤(3):定义SQL语法的XML配置文件,具体的:根据步骤2的结构定义文件,在XML中配置常用的SQL语法,可引用步骤1中定义的模板中的一个或多个常用方法;
步骤(4):加载XML配置文件,***代码根据XML配置文件中动态解析出SQL语法,然后根据SQL语法,同时配合jdbcTemplate对数据库进行操作。
本发明有益效果如下:
本发明中通过将重复书写的SQL逻辑配置成XML文件,并且提供了常用的模板方法,让开发人员快速编码,提高开发效率,另一方便也有助于代码的统一管理,提升软件质量。
本发明主要目的是针对项目需要书写大量静态的SQL语法,影响项目开发进度,衍生出的一种基于动态模板语言渲染生成SQL语法的方法。可使用多种模板引擎(Velocity,Freemarker等),基于[统一]配置[可运行时更改生效]方式,运行时渲染SQL(NOT_ONLY_SQL),无框架依赖,可配合jdbc,jdbcTemplate等使用。
附图说明
图1为本发明对XML配置文件加载时的流程图。
具体实施方式
下面对本发明作进一步的说明。
一种基于动态模板语言渲染的方法,包括如下具体步骤:
步骤(1):定义常用方法集合的模板,使用Velocity引擎的以vm格式保存,使用Freemarker引擎以ftl格式保存;
所述的常用方法包括:in参数的拼接方法、批量***语法的生成方法等。
所述的常用方法集合的模板的定义具体如下:
将使用率频繁的语法结合模板语言抽取出可供调用的方法;
//上述代码是使用Velocity引擎定义的模板方法,主要定义了三个方法。bracket方法定义的是将数据集group通过调用around方法以括号的形式呈现。quto方法定义的是将数据集group通过调用around方法以引号的形式呈现。around方法是将传入的group数据集用pre前缀,aft后缀,join分隔符进行拼接。
//上述代码是使用Freemarker引擎定义的模板方法,主要定义了两个方法。bracket方法定义的是将数据集collection通过调用around方法以括号的形式呈现。around方法是将传入的collection数据集用left前缀,right后缀,join分隔符进行拼接。
上述两个文件分别是基于Velocity和Freemarker定义的常用模板方法,主要作用就是定义一些SQL语法的拼接方法,这里只提供了一部分,开发人员在开发过程中可以总结出更多的模板方法。
步骤(2):定义XML结构定义文件,该文件用来检验XML文件结构的合法性,若不符合xsd文件的定义,改XML将无法进行正确的解析。xsd文件内容示例如下:
步骤(3):定义SQL语法的XML配置文件,具体的:根据xsd文件定义的XML格式,配置各个元素的内容。其中cmd-collection节点的engine元素配置的是解析的引擎类型,cmd节点的id元素配置的是供***调用的方法名,pre-render节点配置的是具体的SQL语法,语法的部分逻辑可引用步骤1中定义的模板中的一个或多个常用方法;
XML文件实例如下:
以往我们将SQL跟JAVA代码定义在一个文件中,并且大家各自为战,一些常用的语法都会不厌其烦的重复写,这样不但浪费时间而且当出现问题的时候查找也比较繁琐。而通过XML配置文件,把不同业务相同的逻辑定义好,开发人员可以根据需要直接调用相应的方法即可。
步骤(4):加载XML配置文件,***代码根据XML配置文件中动态解析出SQL语法,然后根据SQL语法,同时配合jdbcTemplate对数据库进行操作。
如图1所示,对XML配置文件进行加载的时候,所涉及的类的说明如下:
ModelBuilder类主要用来解析SQL的XML配置文件,将配置文件中的cmd节点的内容经过解析后保存在CommandCol类类的属性commands中,经过渲染器接口Renderer渲染(主要是不同的引擎对模板方法的解析)后供组织器Organizer调用。
使用时我们在每个Dao实现类中定义一个Organizer对象,指定解析的XML文件路径。Organizer类中定义XML文件cmd节点id为名称的方法,调用该方法获取到SQL语法,然后结合jdbcTemplate使用,达到对数据库的增删改查的目的。
Claims (3)
1.一种基于动态模板语言渲染的方法,其特征在于包括如下步骤:
步骤(1):定义常用方法集合的模板,使用Velocity引擎的以vm格式保存,使用Freemarker引擎以ftl格式保存;
步骤(2):定义XML结构定义文件xsd,该文件用于描述XML文档的结构,用来检验XML文档的合法性;
步骤(3):定义SQL语法的XML配置文件,具体的:根据步骤2的结构定义文件,在XML中配置常用的SQL语法,可引用步骤1中定义的模板中的一个或多个常用方法;
步骤(4):加载XML配置文件,***代码根据XML配置文件中动态解析出SQL语法,然后根据SQL语法,同时配合jdbcTemplate对数据库进行操作。
2.根据权利要求1所述的一种基于动态模板语言渲染的方法,其特征在于所述的常用方法包括:in参数的拼接方法、批量***语法的生成方法等。
3.根据权利要求1所述的一种基于动态模板语言渲染的方法,其特征在于所述的常用方法集合的模板的定义:将使用率频繁的语法结合模板语言抽取出可供调用的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610431674.6A CN106126564A (zh) | 2016-06-17 | 2016-06-17 | 一种基于动态模板语言渲染的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610431674.6A CN106126564A (zh) | 2016-06-17 | 2016-06-17 | 一种基于动态模板语言渲染的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106126564A true CN106126564A (zh) | 2016-11-16 |
Family
ID=57469833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610431674.6A Pending CN106126564A (zh) | 2016-06-17 | 2016-06-17 | 一种基于动态模板语言渲染的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126564A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726313A (zh) * | 2018-12-28 | 2019-05-07 | 中国银行股份有限公司 | 操作数据库的方法及装置 |
CN109800331A (zh) * | 2018-12-19 | 2019-05-24 | 山东中创软件工程股份有限公司 | 数据读取方法及装置、数据存储方法及装置 |
CN110109939A (zh) * | 2018-01-05 | 2019-08-09 | 中兴通讯股份有限公司 | 基于结构化查询语言sql的开发方法、设备及存储介质 |
CN110427399A (zh) * | 2019-06-18 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 实时数据采集方法、***、装置及存储介质 |
CN112241261A (zh) * | 2019-07-16 | 2021-01-19 | 深圳易为控股有限公司 | 一种基于模板引擎渲染弹窗动态添加内容方法 |
CN114153909A (zh) * | 2021-11-26 | 2022-03-08 | 北京人大金仓信息技术股份有限公司 | 一种基于Velocity模板引擎的数据库表结构翻译方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360202B1 (en) * | 2002-06-26 | 2008-04-15 | Microsoft Corporation | User interface system and methods for providing notification(s) |
US20080320441A1 (en) * | 2007-06-23 | 2008-12-25 | Azadeh Ahadian | Extensible rapid application development for disparate data sources |
CN104424265A (zh) * | 2013-08-29 | 2015-03-18 | 北大方正集团有限公司 | 数字资源管理方法及*** |
CN105389339A (zh) * | 2015-10-20 | 2016-03-09 | 咸亨国际(杭州)物联网信息产业有限公司 | 一种快速生成数据库sql语句和实体类的工具 |
CN105487864A (zh) * | 2015-11-26 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 代码自动生成的方法和装置 |
-
2016
- 2016-06-17 CN CN201610431674.6A patent/CN106126564A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360202B1 (en) * | 2002-06-26 | 2008-04-15 | Microsoft Corporation | User interface system and methods for providing notification(s) |
US20080320441A1 (en) * | 2007-06-23 | 2008-12-25 | Azadeh Ahadian | Extensible rapid application development for disparate data sources |
CN104424265A (zh) * | 2013-08-29 | 2015-03-18 | 北大方正集团有限公司 | 数字资源管理方法及*** |
CN105389339A (zh) * | 2015-10-20 | 2016-03-09 | 咸亨国际(杭州)物联网信息产业有限公司 | 一种快速生成数据库sql语句和实体类的工具 |
CN105487864A (zh) * | 2015-11-26 | 2016-04-13 | 北京京东尚科信息技术有限公司 | 代码自动生成的方法和装置 |
Non-Patent Citations (1)
Title |
---|
孙聚: "基于 FreeMarker引擎的代码生成工具的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109939A (zh) * | 2018-01-05 | 2019-08-09 | 中兴通讯股份有限公司 | 基于结构化查询语言sql的开发方法、设备及存储介质 |
CN110109939B (zh) * | 2018-01-05 | 2023-12-22 | 中兴通讯股份有限公司 | 基于结构化查询语言sql的开发方法、设备及存储介质 |
CN109800331A (zh) * | 2018-12-19 | 2019-05-24 | 山东中创软件工程股份有限公司 | 数据读取方法及装置、数据存储方法及装置 |
CN109726313A (zh) * | 2018-12-28 | 2019-05-07 | 中国银行股份有限公司 | 操作数据库的方法及装置 |
CN110427399A (zh) * | 2019-06-18 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 实时数据采集方法、***、装置及存储介质 |
CN112241261A (zh) * | 2019-07-16 | 2021-01-19 | 深圳易为控股有限公司 | 一种基于模板引擎渲染弹窗动态添加内容方法 |
CN114153909A (zh) * | 2021-11-26 | 2022-03-08 | 北京人大金仓信息技术股份有限公司 | 一种基于Velocity模板引擎的数据库表结构翻译方法和装置 |
CN114153909B (zh) * | 2021-11-26 | 2024-06-07 | 北京人大金仓信息技术股份有限公司 | 一种基于Velocity模板引擎的数据库表结构翻译方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126564A (zh) | 一种基于动态模板语言渲染的方法 | |
US10657111B2 (en) | Computer-implemented method for storing unlimited amount of data as a mind map in relational database systems | |
CN110955410B (zh) | 一种代码自动生成方法、装置、设备及介质 | |
US20140280030A1 (en) | Method of converting query plans to native code | |
CN115617327A (zh) | 低代码页面搭建***、方法及计算机可读存储介质 | |
WO2018045753A1 (zh) | 用于分布式图计算的方法与设备 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN101901265B (zh) | 一种虚拟试验数据对象化管理*** | |
CN104035754A (zh) | 一种基于xml的自定义代码生成方法及生成器 | |
CN104424018A (zh) | 分布式计算事务处理方法及装置 | |
CN103488738A (zh) | 一种自动实现java对象及数据表sql文件的方法及*** | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
CN105468793A (zh) | 一种仿真模型数据的自动化管理方法 | |
WO2021259290A1 (zh) | 存储过程转换方法、装置、设备和存储介质 | |
WO2018001041A1 (zh) | 接口实现方法、装置、机顶盒及存储介质 | |
CN111176660A (zh) | 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质 | |
CN106383734A (zh) | 一种从代码中提取详细设计的方法 | |
CN109597611A (zh) | 前端数据流控制组件开发***、方法、设备及存储介质 | |
CN102779036B (zh) | 用于自动化技术的软件工具 | |
CN110674355B (zh) | 描述数据标注任务的dsl应用***及其方法 | |
CN114925142A (zh) | 一种orm框架的多类型数据库兼容方法、装置、设备及介质 | |
CN114385145A (zh) | 一种Web***后端架构设计方法及计算机设备 | |
CN102968443A (zh) | 优化列车自动监控***ats界面资源管理*** | |
CN102681830B (zh) | 一种比较程序文本的方法和设备 | |
WO2008075087A1 (en) | Code translator and method of automatically translating modelling language code to hardware language code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161116 |
|
RJ01 | Rejection of invention patent application after publication |