CN107391153A - 一种基于Spring与MyBatis框架整合的代码生成方法及装置 - Google Patents

一种基于Spring与MyBatis框架整合的代码生成方法及装置 Download PDF

Info

Publication number
CN107391153A
CN107391153A CN201710638127.XA CN201710638127A CN107391153A CN 107391153 A CN107391153 A CN 107391153A CN 201710638127 A CN201710638127 A CN 201710638127A CN 107391153 A CN107391153 A CN 107391153A
Authority
CN
China
Prior art keywords
key
course
dao
file
model data
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.)
Granted
Application number
CN201710638127.XA
Other languages
English (en)
Other versions
CN107391153B (zh
Inventor
陈嘉昂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Lexin Software Technology Co Ltd
Original Assignee
Shenzhen Lexin Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Lexin Software Technology Co Ltd filed Critical Shenzhen Lexin Software Technology Co Ltd
Priority to CN201710638127.XA priority Critical patent/CN107391153B/zh
Publication of CN107391153A publication Critical patent/CN107391153A/zh
Application granted granted Critical
Publication of CN107391153B publication Critical patent/CN107391153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于Spring与MyBatis框架整合的代码生成方法及装置,该方法包括:读取数据访问对象DAO层配置文件;根据所述DAO层配置文件获取物理数据模型PDM中的模型数据;将所述PDM中的模型数据转化成实体类;调用所述实体类及DAO层模板文件生成DAO层代码文件。本发明解决了现有技术中对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及基于Spring与MyBatist框架的应用开发存在大量重复工作的问题,实现了提高代码复用率及增强生成代码功能的效果。

Description

一种基于Spring与MyBatis框架整合的代码生成方法及装置
技术领域
本发明实施例涉及计算机领域,尤其涉及一种基于Spring与MyBatis框架整合的代码生成方法及装置。
背景技术
目前任何一个商业软件项目,不论是Web项目还是非Web项目,代码量通常在几十万行甚至更多。为了提高项目开发效率以及软件代码的复用率、降低开发成本,通常采用代码生成工具协助项目开发。
开源的框架和代码生成技术,使开发人员从一些繁琐和重复的代码编写工作中解脱出来,目前使用较多的持久层开发框架主要是MyBatis和Hibernate框架,将其与轻量级的控制反转和面向切面的容器框架Spring框架结合,一定程度上减少了代码编写工作。但是利用Spring、MyBatis框架整合的应用开发中仍然存在对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及缺乏对控制层和前端代码的自动生成的支持的问题。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明提供一种基于Spring与MyBatis框架整合的代码生成方法及装置,以实现提高代码复用率及增强生成代码功能的效果。
第一方面,本发明实施例提供了一种基于Spring与MyBatis框架整合的代码生成方法,包括:
读取数据访问对象DAO层配置文件;
根据所述DAO层配置文件获取物理数据模型PDM中的模型数据;
将所述PDM中的模型数据转化成实体类;
调用所述实体类及DAO层模板文件生成DAO层代码文件。
第二方面,本发明实施例还提供了一种基于Spring与MyBatis框架整合的代码生成装置,该装置包括:
DAO层配置文件读取模块,用于读取数据访问对象DAO层配置文件;
模型数据获取模块,用于根据所述DAO层配置文件获取物理数据模型PDM中的模型数据;
模型数据转化模块,用于将所述PDM中的模型数据转化成实体类;
DAO层代码文件生成模块,用于调用所述实体类及DAO层模板文件生成DAO层代码文件。
本发明基于PDM(Physical Data Model,物理数据模型)及模板引擎,通过DAO层配置文件结合DAO层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的DAO层代码,解决了现有技术中对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及基于Spring与MyBatist框架的应用开发存在大量重复工作的问题,实现了提高代码复用率及增强生成代码功能的效果。
附图说明
图1a是本发明实施例一中的一种基于Spring与MyBatis框架整合的代码生成方法的流程图。
图1b是本发明实施例一中的FreeMarker工作原理的示意图。
图2a是本发明实施例二中的一种基于Spring与MyBatis框架整合的DAO层代码生成方法的示意图。
图2b是本发明实施例二中的一种基于Spring与MyBatis框架整合的控制层代码生成方法的示意图。
图3是本发明实施例三中的一种基于Spring与MyBatis框架整合的DAO层代码生成装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a为本发明实施例一提供的一种基于Spring与MyBatis框架整合的代码生成方法的流程图,本实施例可适用于基于Spring与MyBatis框架的应用中,该方法可以由基于Spring与MyBatis框架整合的代码生成装置来执行,所述装置由软件和/或硬件来执行,如图1a所示,本实施例提供的技术方案包括如下步骤:
步骤S110、读取数据访问对象DAO层配置文件。
其中,DAO(Data Access Objects,数据访问对象)是一种应用程序编程接口,DAO层是数据访问层,它的主要作用是将与持久化层相关的代码从业务逻辑层中分离出来,把数据访问层对数据库进行操作的代码全部封装在一个DAO类中。通过DAO层代码生成器读取DAO层配置文件,所述DAO层配置文件包括PDM中PDM文件路径、DAO层包名和模型数据输出根路径。
示例性的,PDM中PDM文件路径可表示为input.pdm=F:/pdm/dshamc.pdm;DAO层包名可表示为java.base.package=com.dshamc.dao;模型数据输出根路径可表示为output.java.directory=F:/project/src/main/java。
步骤S120、根据所述DAO层配置文件获取物理数据模型PDM中的模型数据。
其中,PDM提供了系统初始设计所需要的基础元素,以及相关元素之间的关系,即用于存储结构和访问机制的更高层描述,描述数据是如何在计算机中存储的,如何表达记录结构、记录顺序和访问路径等信息。使用PDM可以在系统层实现数据库,数据库的物理设计阶段必须在此基础上进行详细的后台设计。
示例性的,所述模型数据包括表、视图、主键、外键、候选键、存储过程、函数、触发器、索引、约束、定义域、序列、参照/引用等。其中,所述表包括其它对象如字段、索引、触发器、存储过程等。
根据所述DAO层配置文件获取物理数据模型PDM中的模型数据,具体包括如下步骤:
根据所述DAO层包名查找所述PDM文件路径中对应的模型数据,将所述模型数据根据所述模型数据输出根路径进行输出。
示例性的,根据java.base.package=com.dshamc.dao查找input.pdm=F:/pdm/dshamc.pdm对应的模型数据,将所述模型数据按照output.java.directory=F:/project/src/main/java输出。
由于PDM捕获的元数据非常丰富,并且它密切映射数据库架构,如表、列、主键和外键等方面,解决了对于不同的数据库,需要集成不同的数据库驱动,才能生成代码的问题,实现了通过解析PDM模型,自动获取库表数据的架构。
步骤S130、将所述PDM中的模型数据转化为实体类。
其中,所述实体类指的是JAVA实体类,PDM中的模型数据为可扩展标记语言XML文档,其包含了表对应的JAVA类名。
将所述PDM中的模型数据转化为实体类,具体包括如下步骤:
步骤1、读取PDM中的模型数据,利用PDM文件解析器将模型数据解析成文档Document对象。
其中,Document对象是树的根节点,代表文档操作入口。Document对象的属性包括文档根节点DocumentElement、节点名称NodeType、文档位置DocumentURI等。上述得到的Document对象就代表了整个PDM中的模型数据,即整个XML文档。
示例性的,PDM文件解析器可以为DOM4J的SAXReader文件解析器,其中,DOM4J是一个易用的、开源的库,用于XML、XPath(eXtensible Markup Language,XML路径语言)和XSLT(Extebsible Stylesheet Language Transformation,扩展样式表转换语言的外语),它应用于JAVA平台,采用了JAVA集合框架并完全支持DOM(Document Object Model,文件对象模型)、SAX(Simple API for XML,简单应用程序接口)和JAXP(Java API for XMLProcessing,XML处理的Java API)。
DOM4J首先创建一个解析器的实例SAXReader,然后在内存中建立XML文件的树型结构,从XML文件的根节点Document对象开始。采用SAXReader对象的read()方法激活Document对象,例如,SAXReader reader=new SAXReader()。具体地,根据Documentdocument=reader.read(new BufferedReader(new InputStreamReader(in,charset))),读取XML文档,得到Document对象。其中,reader.read()是重载的,可以读取多种不同的资源。
步骤2、根据所述Document对象获取根节点。
示例性的,根据Objectdescriber parseObject(Node root)获取根节点。
步骤3、根据所述根节点获取节点,并遍历节点的所有属性。
示例性的,根据List<?>colums=root.selectNodes(root,getUniquePath()+"/c:Columns/o:Column")和PropertyDescriber pd=parseProperty(column)、bean.getProperties().add(pd),获取并遍历节点"/c:Columns/o:Column"的所有属性。其中,所述属性包括id=getNodeText(root,"a:ObjectID")、name=getNodeText(root,"a:Name")、code=getNoteText(root,"a:Code")和comment=getNodeText(root,"a:Comment")。
步骤4、解析所述节点的所有属性,转换成对应实体类的属性。
示例性的,根据PropertyDescriber bean=new PropertyDescriber();bean.setId(id);bean.setName(name);bean.setCode(code);bean.setComment(comment)将"/c:Columns/o:Column"的所有属性id、name、code和comment转换成对应实体类的属性Id、Name、Code和Comment。
经过上述步骤1-步骤4,完成了将所述PDM中的模型数据转化为实体类的过程。
步骤S140、调用所述实体类及DAO层模板文件生成DAO层代码文件。
其中,通过模板引擎获取模板文件,模板引擎是为了使用户界面与业务数据分离而产生的,它可以生成特定格式的文档。示例性的,模板引擎包括但不限于FreeMarker和Velocity。其中,FreeMarker是一个用JAVA编写的模板引擎,根据指定的模板输出多种规格的文档,如XML、HRML、RTF等。在设计模板时不需要关系所需要的数据来源,只需预先在需要填充数据的地方预留替换占位符,这样在模板引擎解析模板时就可以动态地加载数据,替换占位符的内容。FreeMarker的核心原理是:数据模型+模板=输出。
模板文件可以理解成是一种解释型文件,需要模板引擎解析执行,模板文件由静态对象、动态对象和嵌套对象三部分组成。其中,静态对象表示静态内容,模板解析时只是简单的将静态内容输出到目标文件中;嵌套对象指在一个模板文件中包含的其它模板文件,嵌套对象包含两类,一类是需要解析的嵌套对象,另一类是不需要解析的嵌套对象;动态对象描述模板中的数据内容和流程控制部分,由特殊的模板标签进行引入,在模板解析时需要借助定义文件中的数据来完成动态对象到源代码的转化。其中,模板标签都属于动态对象或者嵌套对象,定义在符号“$”后面,$后跟参数名,在模板解析时通过这个标志进行判断,实现参数的替换功能。
示例性的,图1b为FreeMarker工作原理的示意图。图中模板文件中预留${Customer.Name}充当占位符,当程序运行时,模板引擎解析模板文件,用程序传递过来的Customer.Name="Tam"的值替换${Customer.Name}部分,这样在终端用户看到的输出页面就是如图1b所示的输出结果页面。
相应的,DAO层模板文件是一种解释型文件,需要模板引擎解析执行。
调用所述实体类及DAO层模板文件生成DAO层代码文件,具体包括如下步骤:
步骤1、创建DAO层模板文件,预留替换占位符。
其中,替换占位符用于在模板引擎解析模板文件时加载数据,替换占位符的内容,例如,${prop.comment!""},其中,所述数据是指实体类。
示例性的,所述DAO模板文件包括condition.vm、dao.vm、entity.vm、mapper.vm和mapper_xml.vm。
步骤2、根据DAO层模板文件路径获取所述DAO层模板文件,加载实体类,替换所述DAO层模板文件中所述替换占位符的内容,生成DAO层代码文件。
示例性的,通过Templatetemplate=getConfiguration().getTemplate(path)获取getTemplate,即为根据DAO层模板文件路径获取所述DAO层模板文件,加载Objectparams=calculatParameters(object),利用template.process(params,out)将params中的数据替换getTemplate中替换占位符的内容,即为加载实体类,替换所述DAO层模板文件中所述替换占位符的内容。其中,Configuration是FreeMarker提供的一个类,主要是对编码和模板的位置等进行配置;Template是FreeMarker提供的一个模板类,负责生成模板、处理模板任务;params为Template提供实体类。
示例性的,所述待生成DAO层代码文件包括ConditionGenerator、DaoGenerator、EntityGenerator、GenMapperGenerator、JuuFreeMarkerGenerator、JuuGenerator和MapperXmlGenerator。
本实施例的技术方案,基于PDM及模板引擎,通过DAO层配置文件结合DAO层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的DAO层代码,解决了现有技术中对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及基于Spring与MyBatist框架的应用开发存在大量重复工作的问题,实现了提高代码复用率及增强生成代码功能的效果。
在本实施例技术方案的基础上,所述方法还包括:
读取控制层配置文件。
其中,控制层模板文件是一种解释型文件,需要模板引擎解析执行。通过控制层代码生成器读取控制层配置文件,所述控制层配置文件包括:控制层文件输出路径、控制层包名、模块名称、控制层请求根路径。
示例性的,控制层文件输出路径可表示为output.ctldemo.directory=F:/project/src/main/java;控制层包名可表示为ctldemo.base.package=com.dshamc.mvc;模块名称可表示为ctldemo.module=orderHandler;控制层请求根路径可表示为ctldemo.base.uri=/orderHandler。
调用所述控制层配置文件及控制层模板文件生成控制层代码文件。
其中,具体包括:
步骤1、根据所述控制层配置文件获取模型数据。
示例性的,根据ctldemo.base.package=com.dshamc.mvc和ctldemo.module=orderHandler查找ctldemo.base.uri=/orderHandler将所述模型数据按照ctldemo.base.uri=/orderHandler输出。
步骤2、利用所述PDM文件解析器将所述模型数据解析成文档Document对象。
步骤3、根据所述Document对象获取根节点。
步骤4、根据所述根节点获取节点,并遍历节点的所有属性。
其中,上述步骤2-步骤4具体采用与将所述PDM中的模型数据转化为实体类中步骤1-步骤3相同的处理方式。
步骤5、创建控制层模板文件,预留替换占位符。
示例性的,所述控制层模板文件包括common_rawdata.vm、common_result.vm、json_controller.vm、list_controller.vm、list_rawdataa.vm、list_result.vm、list_row.vm、page_controller.vm、page_javascript.vm、page_template.vm。所述替换占位符如"${url}"。
步骤6、根据控制层模板文件路径获取所述控制层模板文件,加载所述节点的所有属性,替换所述控制层模板文件中所述替换占位符的内容,生成控制层代码文件。
示例性的,通过Templatetemplate=getConfiguration().getTemplate(path)获取getTemplate,即为根据DAO层模板文件路径获取所述控制层模板文件,加载Objectparams=calculatParameters(object),利用template.process(params,out)将params中的数据替换getTemplate中替换占位符的内容,即为所述节点的所有属性,替换所述DAO层模板文件中所述替换占位符的内容。
示例性的,所述待生成控制层代码文件包括CtldemoFreeMakerGenerator、CtldemoGenerator、JsonControllerGenerator、ListPageControllerGenerator、ListRawdataGenerator、ListResultGenerator、ListRowGenerator、PageControllerGenerator、PagejavascriptGenerator、PageTemplateGenerator、RawdataGenerator和ResultGenerator。
基于PDM及模板引擎,通过控制层配置文件结合控制层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的控制层代码,解决了现有技术中缺乏对控制层和前端代码的自动生成的支持的问题,实现了提高代码复用率及增强生成代码功能的效果。
实施例二
图2a为本发明实施例二提供的一种基于Spring与MyBatis框架整合的DAO层代码生成方法的示意图。本实施例是在上述各实施例的基础上,提供了一个优选实施例。如图2a所示,本实施例提供的技术方如下步骤:
步骤1、通过DAO层代码生成器读取DAO层配置文件,其中,DAO层配置文件包括PDM中PDM文件路径、DAO层包名、模型数据输出根路径。
步骤2、根据上述DAO层配置文件获取PDM中的模型数据,调用PDM文件解析器将PDM中的模型数据转化为实体类。
步骤3、根据Velocity获取DAO层模板文件。
步骤4、加载所述实体类填充至所述DAO层模板文件中。
步骤5、生成DAO层代码文件。
本实施例的技术方案,基于PDM及Velocity,通过DAO层配置文件结合DAO层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的DAO层代码,解决了现有技术中对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及基于Spring与MyBatist框架的应用开发存在大量重复工作的问题,实现了提高代码复用率及增强生成代码功能的效果。
在上述实施例的基础上,图2b为本发明实施例二提供的一种基于Spring与MyBatis框架整合的控制层代码生成方法的示意图,本实施例提供的技术方如下步骤:
步骤1、通过控制层代码生成器读取控制层配置文件,其中,控制层配置文件包括控制层文件输出路径、控制层包名、模块名称、控制层请求根路径;
步骤2、根据上述控制层配置文件获取PDM中的模型数据,调用PDM文件解析器获取PDM中的模型数据的对应实体类的属性。
步骤3、根据Velocity获取控制层模板文件。
步骤4、加载所述对应实体类的属性填充至所述控制层模板文件中。
步骤5、生成控制层代码文件。
基于PDM及Velocity,通过控制层配置文件结合控制层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的控制层代码,解决了现有技术中缺乏对控制层和前端代码的自动生成的支持的问题,实现了提高代码复用率及增强生成代码功能的效果。
实施例三
图3所示为本发明实施例三提供的一种基于Spring与MyBatis框架整合的代码生成装置的结构示意图,该装置的具体结构如下:
DAO层配置文件读取模块310,用于读取数据访问对象DAO层配置文件。
模型数据获取模块320,用于根据所述DAO层配置文件获取物理数据模型PDM中的模型数据。
示例性的,所述模型数据获取模块320,具体用于:
根据所述DAO层包名查找所述PDM文件路径中对应的模型数据,将所述模型数据根据所述模型数据输出根路径进行输出。
由于PDM捕获的元数据非常丰富,并且它密切映射数据库架构,如表、列、主键和外键等方面,解决了对于不同的数据库,需要集成不同的数据库驱动,才能生成代码的问题,实现了通过解析PDM模型,自动获取库表数据的架构。
模型数据转化模块330,用于将所述PDM中的模型数据转化成实体类。
示例性的,所述模型数据转化模块330,具体用于:
读取PDM中的模型数据,利用PDM文件解析器将模型数据解析成文档Document对象。
根据所述Document对象获取根节点。
根据所述根节点获取节点,并遍历节点的所有属性。
解析所述节点的所有属性,转换成对应实体类的属性。
DAO层代码文件生成模块340,用于调用所述实体类及dao层模板文件生成dao层代码文件。
示例性的,所述DAO层代码文件生成模块340,具体用于:
创建DAO层模板文件,预留替换占位符;
根据DAO层模板文件路径获取所述DAO层模板文件,加载实体类,替换所述DAO层模板文件中所述替换占位符的内容,生成DAO层代码文件。
本实施例的技术方案,基于PDM及模板引擎,通过DAO层配置文件结合DAO层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的DAO层代码,解决了现有技术中对于不同的数据库,需要集成不同的数据库驱动,才能生成代码及基于Spring与MyBatist框架的应用开发存在大量重复工作的问题,实现了提高代码复用率及增强生成代码功能的效果。
在本实施例技术方案的基础上,所述装置还包括:
控制层配置文件读取模块,用于读取控制层配置文件;
控制层代码文件生成模块,用于调用所述控制层配置文件及控制层模板文件生成控制层代码文件。
示例性的,所述控制层代码文件生成模块,具体用于:
根据所述控制层配置文件获取模型数据。
利用所述PDM文件解析器将所述模型数据解析成文档Document对象。
根据所述Document对象获取根节点。
根据所述根节点获取节点,并遍历节点的所有属性。
创建控制层模板文件,预留替换占位符。
根据控制层模板文件路径获取所述控制层模板文件,加载所述节点的所有属性,替换所述控制层模板文件中所述替换占位符的内容,生成控制层代码文件。基于PDM及模板引擎,通过控制层配置文件结合控制层模板文件,自动化生成了基于Spring与MyBatist框架整合的功能强大的控制层代码,解决了现有技术中缺乏对控制层和前端代码的自动生成的支持的问题,实现了提高代码复用率及增强生成代码功能的效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种基于Spring与MyBatis框架整合的代码生成方法,其特征在于,包括:
读取数据访问对象DAO层配置文件;
根据所述DAO层配置文件获取物理数据模型PDM中的模型数据;
将所述PDM中的模型数据转化成实体类;
调用所述实体类及DAO层模板文件生成DAO层代码文件。
2.根据权利要求1所述的方法,其特征在于,还包括:
读取控制层配置文件;
调用所述控制层配置文件及控制层模板文件生成控制层代码文件。
3.根据权利要求1所述的方法,其特征在于,所述DAO层配置文件包括PDM中PDM文件路径、DAO层包名、模型数据输出根路径;
根据所述DAO层配置文件获取物理数据模型PDM中的模型数据,包括:
根据所述DAO层包名查找所述PDM文件路径中对应的模型数据,将所述模型数据根据所述模型数据输出根路径进行输出。
4.根据权利要求1所述的方法,其特征在于,将所述PDM中的模型数据转化成实体类,包括:
读取PDM中的模型数据,利用PDM文件解析器将模型数据解析成文档Document对象;
根据所述Document对象获取根节点;
根据所述根节点获取节点,并遍历节点的所有属性;
解析所述节点的所有属性,转换成对应实体类的属性。
5.根据权利要求1所述的方法,其特征在于,调用所述实体类及DAO层模板文件生成DAO层代码文件,包括:
创建DAO层模板文件,预留替换占位符;
根据DAO层模板文件路径获取所述DAO层模板文件,加载实体类,替换所述DAO层模板文件中所述替换占位符的内容,生成DAO层代码文件。
6.根据权利要求2所述的方法,其特征在于,所述控制层配置文件包括控制层文件输出路径、控制层包名、模块名称、控制层请求根路径;
调用所述控制层配置文件及控制层模板文件生成控制层代码文件,包括:
根据所述控制层配置文件获取模型数据;
利用所述PDM文件解析器将所述模型数据解析成文档Document对象;
根据所述Document对象获取根节点;
根据所述根节点获取节点,并遍历节点的所有属性;
创建控制层模板文件,预留替换占位符;
根据控制层模板文件路径获取所述控制层模板文件,加载所述节点的所有属性,替换所述控制层模板文件中所述替换占位符的内容,生成控制层代码文件。
7.一种基于Spring与MyBatis框架整合的代码生成装置,其特征在于,包括:
DAO层配置文件读取模块,用于读取数据访问对象DAO层配置文件;
模型数据获取模块,用于根据所述DAO层配置文件获取物理数据模型PDM中的模型数据;
模型数据转化模块,用于将所述PDM中的模型数据转化成实体类;
DAO层代码文件生成模块,用于调用所述实体类及DAO层模板文件生成DAO层代码文件。
8.根据权利要求7所述的装置,其特征在于,还包括:
控制层配置文件读取模块,用于读取控制层配置文件;
控制层代码文件生成模块,用于调用所述控制层配置文件及控制层模板文件生成控制层代码文件。
9.根据权利要求7所述的装置,其特征在于,所述DAO层配置文件包括PDM中PDM文件路径、DAO层包名、模型数据输出根路径;
所述模型数据获取模块,用于:
根据所述DAO层包名查找所述PDM文件路径中对应的模型数据,将所述模型数据根据所述模型数据输出根路径进行输出。
10.根据权利要求7所述的装置,其特征在于,所述模型数据转化模块,用于:
读取PDM中的模型数据,利用PDM文件解析器将模型数据解析成文档Document对象;
根据所述Document对象获取根节点;
根据所述根节点获取节点,并遍历节点的所有属性;
解析所述节点的所有属性,转换成对应实体类的属性。
11.根据权利要求7所述的装置,其特征在于,所述DAO层代码文件生成模块,用于:
创建DAO层模板文件,预留替换占位符;
根据DAO层模板文件路径获取所述DAO层模板文件,加载实体类,替换所述DAO层模板文件中所述替换占位符的内容,生成DAO层代码文件。
12.根据权利要求8所述的装置,其特征在于,所述控制层配置文件包括控制层文件输出路径、控制层包名、模块名称、控制层请求根路径;
所述控制层代码文件生成模块,用于:
根据所述控制层配置文件获取模型数据;
利用所述PDM文件解析器将所述模型数据解析成文档Document对象;
根据所述Document对象获取根节点;
根据所述根节点获取节点,并遍历节点的所有属性;
创建控制层模板文件,预留替换占位符;
根据控制层模板文件路径获取所述控制层模板文件,加载所述节点的所有属性,替换所述控制层模板文件中所述替换占位符的内容,生成控制层代码文件。
CN201710638127.XA 2017-07-31 2017-07-31 一种基于Spring与MyBatis框架整合的代码生成方法及装置 Active CN107391153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710638127.XA CN107391153B (zh) 2017-07-31 2017-07-31 一种基于Spring与MyBatis框架整合的代码生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710638127.XA CN107391153B (zh) 2017-07-31 2017-07-31 一种基于Spring与MyBatis框架整合的代码生成方法及装置

Publications (2)

Publication Number Publication Date
CN107391153A true CN107391153A (zh) 2017-11-24
CN107391153B CN107391153B (zh) 2020-10-16

Family

ID=60341329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710638127.XA Active CN107391153B (zh) 2017-07-31 2017-07-31 一种基于Spring与MyBatis框架整合的代码生成方法及装置

Country Status (1)

Country Link
CN (1) CN107391153B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628606A (zh) * 2018-05-09 2018-10-09 烽火通信科技股份有限公司 一种嵌入式设备的web网管应用程序生成方法及系统
CN109471619A (zh) * 2018-11-20 2019-03-15 北京千丁互联科技有限公司 Mybatis代码生成方法、装置及计算机终端
CN109871229A (zh) * 2019-01-16 2019-06-11 平安普惠企业管理有限公司 代码文本的管理方法、装置、存储介质及终端设备
CN110941423A (zh) * 2019-11-22 2020-03-31 深圳市航通智能技术有限公司 一种基于Java的快速生成代码方法
CN111078213A (zh) * 2018-10-18 2020-04-28 马上消费金融股份有限公司 一种代码生成方法及代码生成装置
CN111488143A (zh) * 2020-04-15 2020-08-04 南京及物智能技术有限公司 一种基于Springboot2代码自动生成装置和方法
CN112732259A (zh) * 2021-01-11 2021-04-30 赞同科技股份有限公司 基于人工智能的前端交互页面转换方法、装置及介质
CN113094195A (zh) * 2021-04-30 2021-07-09 核动力运行研究所 一种接口调用文件的生成方法及装置
CN113535141A (zh) * 2020-04-16 2021-10-22 浙江大搜车软件技术有限公司 数据库操作代码的生成方法及装置
CN113741870A (zh) * 2021-08-20 2021-12-03 苏州浪潮智能科技有限公司 一种获取Spring框架中数据的方法、系统、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226478A (zh) * 2013-05-22 2013-07-31 北京金和软件股份有限公司 一种自动生成并使用代码的方法
CN104965714A (zh) * 2015-07-27 2015-10-07 广州杰赛科技股份有限公司 应用软件的代码生成方法和系统
US20150381286A1 (en) * 2014-06-30 2015-12-31 Alcatel-Lucent Usa Inc. Optical receiver for quadrature-phase-shift-keying and quadrature-duobinary signals
CN105677323A (zh) * 2015-12-31 2016-06-15 合肥大多数信息科技有限公司 一种自动生成数据库操作层代码的方法
CN105824619A (zh) * 2016-03-10 2016-08-03 四川交通职业技术学院 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226478A (zh) * 2013-05-22 2013-07-31 北京金和软件股份有限公司 一种自动生成并使用代码的方法
US20150381286A1 (en) * 2014-06-30 2015-12-31 Alcatel-Lucent Usa Inc. Optical receiver for quadrature-phase-shift-keying and quadrature-duobinary signals
CN104965714A (zh) * 2015-07-27 2015-10-07 广州杰赛科技股份有限公司 应用软件的代码生成方法和系统
CN105677323A (zh) * 2015-12-31 2016-06-15 合肥大多数信息科技有限公司 一种自动生成数据库操作层代码的方法
CN105824619A (zh) * 2016-03-10 2016-08-03 四川交通职业技术学院 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SILVER_: "JToolpad代码生成工具使用说明文档", 《HTTPS://DOWNLOAD.CSDN.NET/PSEARCH/0/10/0/2/1/JTOOLPAD》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628606B (zh) * 2018-05-09 2021-08-03 烽火通信科技股份有限公司 一种嵌入式设备的web网管应用程序生成方法及系统
CN108628606A (zh) * 2018-05-09 2018-10-09 烽火通信科技股份有限公司 一种嵌入式设备的web网管应用程序生成方法及系统
CN111078213A (zh) * 2018-10-18 2020-04-28 马上消费金融股份有限公司 一种代码生成方法及代码生成装置
CN111078213B (zh) * 2018-10-18 2024-01-19 马上消费金融股份有限公司 一种代码生成方法及代码生成装置
CN109471619A (zh) * 2018-11-20 2019-03-15 北京千丁互联科技有限公司 Mybatis代码生成方法、装置及计算机终端
CN109871229A (zh) * 2019-01-16 2019-06-11 平安普惠企业管理有限公司 代码文本的管理方法、装置、存储介质及终端设备
CN110941423A (zh) * 2019-11-22 2020-03-31 深圳市航通智能技术有限公司 一种基于Java的快速生成代码方法
CN111488143A (zh) * 2020-04-15 2020-08-04 南京及物智能技术有限公司 一种基于Springboot2代码自动生成装置和方法
CN113535141A (zh) * 2020-04-16 2021-10-22 浙江大搜车软件技术有限公司 数据库操作代码的生成方法及装置
CN112732259A (zh) * 2021-01-11 2021-04-30 赞同科技股份有限公司 基于人工智能的前端交互页面转换方法、装置及介质
CN112732259B (zh) * 2021-01-11 2024-05-24 赞同科技股份有限公司 基于人工智能的前端交互页面转换方法、装置及介质
CN113094195A (zh) * 2021-04-30 2021-07-09 核动力运行研究所 一种接口调用文件的生成方法及装置
CN113094195B (zh) * 2021-04-30 2024-09-24 核动力运行研究所 一种接口调用文件的生成方法及装置
CN113741870A (zh) * 2021-08-20 2021-12-03 苏州浪潮智能科技有限公司 一种获取Spring框架中数据的方法、系统、设备和存储介质
CN113741870B (zh) * 2021-08-20 2023-07-14 苏州浪潮智能科技有限公司 一种获取Spring框架中数据的方法、系统、设备和存储介质

Also Published As

Publication number Publication date
CN107391153B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN107391153A (zh) 一种基于Spring与MyBatis框架整合的代码生成方法及装置
US10915703B2 (en) Validating an XML document
US6684222B1 (en) Method and system for translating data associated with a relational database
US8286132B2 (en) Comparing and merging structured documents syntactically and semantically
CN101661460B (zh) 管理系统报表生成方法和装置
CN104360859B (zh) 一种可视化的服务开发方法和系统
CN101446971B (zh) 构建内容管理系统的方法及装置
CN102542002A (zh) 一种卫星遥测数据处理系统以及其实现方法
CN101339500A (zh) 基于xml模式的数据绑定应用程序接口生成方法
CN109815242B (zh) 一种数据处理方法及系统
CN103383645A (zh) 代码生成方法及系统
CN102215126B (zh) 性能报表的生成方法及装置
CN101216906A (zh) 一种流程控制方法及一种流程引擎
CN103176778B (zh) 网页开发方法和装置
CN111309313A (zh) 一种快速生成html以及存储表单数据的方法
CN113407877B (zh) 一种可配置化的web表单实现方法
US20130018923A1 (en) LossLess Transformation of XBRL Instance to XML Data Model Instance
CN101634942A (zh) 一种动态创建数据表的方法和系统
CN101794223B (zh) Wade服务消息架构的设计方法
CN102830974A (zh) 一种可视化快速生成java代码的辅助开发工具
WO2006096817A9 (en) Method and system for extracting structural information from a data file
CN113297831B (zh) 一种Excel生成可校验报表网页的方法和系统
US20240273094A1 (en) Universal Container for Structured and Unstructured Data from Disparate Sources, and Methods for Querying Same
CN111259634A (zh) Xsd格式文件的解析方法及生成方法
US20130290829A1 (en) Partition based structured document transformation

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
GR01 Patent grant
GR01 Patent grant