CN112306463B - 基于POJO的mybatis生成方法、系统、存储介质及设备 - Google Patents

基于POJO的mybatis生成方法、系统、存储介质及设备 Download PDF

Info

Publication number
CN112306463B
CN112306463B CN202011096401.3A CN202011096401A CN112306463B CN 112306463 B CN112306463 B CN 112306463B CN 202011096401 A CN202011096401 A CN 202011096401A CN 112306463 B CN112306463 B CN 112306463B
Authority
CN
China
Prior art keywords
database table
java
pojo
mapper
table definition
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.)
Active
Application number
CN202011096401.3A
Other languages
English (en)
Other versions
CN112306463A (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 Zhongnong Yixun Information Technology Co ltd
Shenzhen Agricultural Products Co ltd
Original Assignee
Shenzhen Zhongnong Yixun Information Technology Co ltd
Shenzhen Agricultural Products 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 Zhongnong Yixun Information Technology Co ltd, Shenzhen Agricultural Products Co ltd filed Critical Shenzhen Zhongnong Yixun Information Technology Co ltd
Priority to CN202011096401.3A priority Critical patent/CN112306463B/zh
Publication of CN112306463A publication Critical patent/CN112306463A/zh
Application granted granted Critical
Publication of CN112306463B publication Critical patent/CN112306463B/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/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

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

Abstract

本发明实施例公开了一种基于POJO的mybatis生成方法,所述mybatis中包括mapper.JAVA和mapper.xml文件,所述方法包括以下步骤:在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;使用JAVA语法解析工具将所述POJO解析为JAVA语法树;通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,并写入文件系统。采用本发明对POJO的修改不再需要修改多个文件,且由于逆向工程导致原有代码被覆盖的问题也得到解决,都使得开发者可专注于面对对象的设计,提升了开发效率。

Description

基于POJO的mybatis生成方法、系统、存储介质及设备
技术领域
本发明涉及JAVA开发技术领域,尤其涉及一种基于POJO的mybatis生成方法、系统、存储介质及设备。
背景技术
mybatis由于其灵活的查询以及框架的轻量,在对象关系映射(ORM)框架中广受欢迎,但由于其设计思想与Java持久层API(Java Persistence API,JPA)规范相悖,未实现JPA规范,导致其使用较为繁琐,开发者需要写大量的mapper.xml,简单的JAVA对象(PlainOrdinary Java Object,POJO)任何属性的修改,都要修改多个文件,其中包括对数据库表结构的更新。
对此官方发布了一套逆向工程工具MyBatis代码生成器(Mybatis generator,MBG),所谓逆向是指由数据库表结构生成mapper和POJO的过程,市面上也有大量逆向工程工具,市面上所有的生成工具都是在此思想上做改进,先通过数据库定义,获取数据实体的所有信息,再以此信息为基础,构造JAVA所需POJO类,再根据生成的POJO类与数据库表定义生成映射关系Mapper;另一种是动态mapper的方式,如mybatis-plus,在运行时动态生成mapper。二者都简化了mybatis的使用,也被大量开发者接受,但是由于逆向工程是由表生成代码,且会覆盖原有代码,因此会造成无法预料的错误。
目前对于开发过程中的POJO任何属性的修改,仍存在要修改多个文件这个非常繁琐且无意义的问题,以及由于逆向工程导致原有代码被覆盖的问题,这些都使得无法让开发者更专注于面对对象的设计,极大降低了开发效率。
发明内容
基于此,有必要针对上述问题,提出了一种基于POJO的mybatis生成方法、装置、计算机设备及存储介质。
本发明第一方面提供了一种基于POJO的mybatis生成方法,所述方法包括:
在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
本发明第二方面提供了一种基于POJO的mybatis生成系统,所述系统包括:
补充模块:在简单的JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
分析模块:用于使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
构建模块:用于通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
生成模块:用于通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
本发明第三方面提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
本发明第四方面提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
采用本发明实施例,具有如下有益效果:
本发明通过对开发者的POJO实体类进行JAVA语法树分析并结合补充的必要信息快速生成mapper和表结构,是一个正向的生成过程,开发者不用担心代码覆盖问题,且开发过程中对POJO的修改不再需要对大量文件修改,可直接在代码进行修改,让开发者更专注于面对对象的设计,提高了开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中基于POJO的mybatis生成方法的流程图;
图2为一个实施例中根据所述alter或insert语句修改数据库表的流程图;
图3为一个实施例中基于POJO的mybatis生成系统的结构框图;
图4为一个实施例中计算机设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的JAVA是由Sun Microsystems在1995年首先发布的编程语言和计算平台,几乎是所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于Web的内容和企业软件的全球标准。有许多应用程序和Web站点只有在安装JAVA后才能正常工作,而且这样的应用程序和Web站点日益增多。JAVA快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,JAVA无处不在。
如图1所示,在一个实施例中,提供了一种基于POJO的mybatis生成方法,图1为一个实施例中基于POJO的mybatis生成方法的流程图,具体包括如下步骤:
步骤101:在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息。
其中,在JAVA对象POJO的类名和属性上补充数据库表结构的必要信息,采用增加注释的方式对从JAVA中获取不到的数据库表结构的信息进行补充,不引入注解以实现对代码零入侵。
其中,Java的注释方式包括:
(1)单行注释://注释内容
(2)多行注释:/*……注释内容……*/
(3)文档注释:/**……注释内容……*/
其中,文档注释包括:
(1)类注释:类注释用于说明整个类的功能、特性等,它应该放在所有的“import”语句之后,在class定义之前。这个规则也适用于接口(interface)注释。
(2)方法注释:方法注释用来说明方法的定义,比如,方法的参数、返回值及说明方法的作用等。方法注释应该放在它所描述的方法定义前面。
(3)属性注释:默认情况下,javadoc只对公有(public)属性和受保护属性(protected)产生文档——通常是静态常量。
(4)包注释:类、方法、属性的注释都直接放到Java的源文件中,而对于包的注释,无法放到Java文件中去,只能通过在包对应的目录中添加一个package.html的文件来达到这个目的。当生成HTML文件时,package.html文件的和部分的内容将会被提取出来当做包的说明。
(5)概要注释。除了包注释外,还有一种类型的文档无法从Java源文件中提取,就是对所有类文件提供概要说明的文件。同样的,也可以为这类注释单独新建一个HTML文件,这个文件的名字为“overview.html”,它的和标记之间的内容都会被提取。
1@author:作者。
2@version:版本。
3@docroot:表示产生文档的根路径。
4@deprecated:不推荐使用的方法。
5@param:方法的参数类型。
6@return:方法的返回类型。
7@see:用于指定参考的内容。
8@exception:抛出的异常。
9@throws:抛出的异常,和exception同义。
其中,从JAVA中获取不到的数据库表结构的信息包括存储长度、映射类型等,数据库表结构的信息录入是可选的,在此举例不做具体限定。
步骤102:使用JAVA语法解析工具将所述POJO解析为JAVA语法树。
其中,在计算机语言中,抽象语法树(Abstract Syntax Tree,AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,很多工具和库的核心都是通过语法树这个概念来实现对代码的检查、分析等操作。抽象语法树也称为AST语法树,指的是源代码语法所对应的树状结构。可以理解的是,对于一种具体编程语言下的源代码,通过构建语法树的形式将源代码中的语句映射到树中的每一个节点上。
以下示例为对AST进行简要介绍:
源代码为:
上述代码的AST为:
其中,可以理解的是,JAVA语法解析工具包括JAVAPARSER、Esprima、UglifuJS2、Acorn等,结合实际情况选择,在此举例不做具体限定。
步骤103:通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义。
在一个实施例中,步骤103包括:
读取包含POJO的JAVA文件;
使用JAVAPARSER将JAVA文件中的POJO解析为JAVA语法树;
对JAVA语法树进行分析及基于补充的数据库表结构的必要信息,读取class注释、POJO类名、field注释、field名称及field类型;
利用读取的class注释、POJO类名、field注释、field名称及field类型构建数据库表定义。
本发明通过对开发者的POJO实体类进行JAVA语法树分析并结合补充的必要信息快速生成mapper和表结构,是一个正向的生成过程,开发者不用担心代码覆盖问题,且开发过程中对POJO的修改不再需要对大量文件修改,可直接在代码进行修改,让开发者更专注于面对对象的设计,提高了开发效率。
在一个实施例中,所述通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义之后,还包括:
步骤201:读取历史数据库表定义;
步骤202:通过所述数据库表定义与所述历史数据库表定义对比生成alter或insert语句;
步骤203:根据所述alter或insert语句修改所述数据库表定义对应的数据库表。
其中,alter语句包括修改语句,insert语句包括创建表语句。
其中,alter语句包括:
(1)删除列:ALTER TABLE【表名字】DROP【列名称】
(2)增加列:ALTER TABLE【表名字】ADD【列名称】INT NOT NULL COMMENT'注释说明'
(3)修改列的类型信息:ALTER TABLE【表名字】CHANGE【列名称】【新列名称(这里可以用和原来列同名即可)】BIGINT NOT NULL COMMENT'注释说明'
(4)重命名列:ALTER TABLE【表名字】CHANGE【列名称】【新列名称】BIGINT NOTNULL COMMENT'注释说明'
(5)重命名表:ALTER TABLE【表名字】RENAME【表新名字】
(6)删除表中主键:Alter TABLE【表名字】drop primary key
(7)添加主键:ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY(resid,resfromid)
可以理解的是上述语句只是alter语句的部分例,在此只做举例不做具体限定。
其中,insert语句包括:
(1)、INSERT INTO t1(field1,field2)VALUE(v001,v002);明确只插入一条Value;
(2)、INSERT INTO t1(field1,field2)
VALUES(v101,v102),(v201,v202),(v301,v302),(v401,v402);在插入批量数据时方式优于方式(1);
(3)INSERT INTO t2(field1,field2)SELECT col1,col2 FROM t1
WHERE……;特别常用,由于可以指定插入到talbe2中的列,以及可以通过相对较复杂的查询语句进行数据源获取,使用起来会更加的灵活一些。
其中,可以理解的是上述语句只是insert语句的部分例,在此只做举例不做具体限定。
在一个实施例中,步骤203包括,读取历史数据库表定义;若存在历史数据库,则通过数据库表定义与历史数据库表定义对比生成修改语句,并利用修改语句修改数据库表定义对应的数据库表;若不存在历史数据库,则通过数据库表定义与历史数据库表定义对比生成创建表语句,并利用创建表语句修改数据库表定义对应的数据库表。
步骤104:通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
在一个实施例中,通过数据库表定义,生成POJO与数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成mybatis之后,并将mybatis写入文件系统之前还包括:
使用预设的前缀命名方式对mapper.JAVA进行命名,前缀命名方式区别于历史mapper.JAVA。
其中,前缀命名形式为:生成mapper:BaseXXXmapper;历史mapper:XXXmapper。可以理解的是名字中XXX只作为举例,可根据不同接口更改对应名称,不做具体限定,
在一个实施例中,将mybatis写入文件系统之后,还包括:
历史mapper.JAVA继承生成的mapper.JAVA,其中,子类是历史mapper.JAVA,父类是生成的mapper.JAVA,继承包括子类拥有父类的所有功能。
继承代码书写示例如下:
其中,该示例中BaseAsyncFailLogMapper为生成的mapper.JAVA,AsyncFailLogMapper为历史的mapper.JAVA,可以理解的是,上述示例只是举例不做具体限定。
本发明通过对开发者的POJO实体类进行JAVA语法树分析并结合补充的必要信息快速生成mapper和表结构,是一个正向的生成过程,开发者不用担心代码覆盖问题,且开发过程中对POJO的修改不再需要对大量文件修改,可直接在代码进行修改,让开发者更专注于面对对象的设计,提高了开发效率。
如图3所示,在一个实施例中,提出了一种基于POJO的mybatis生成系统,图3为一个实施例中基于POJO的mybatis生成系统的结构框图,该系统包括:
补充模块301:在简单的JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
分析模块302:用于使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
构建模块303:用于通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
生成模块304:用于通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统。
图3所示实施例中涉及到的一种基于POJO的mybatis生成系统中包含的各个模块的相关内容,与上述图1及图2所示实施例中涉及到的一种基于POJO的mybatis生成方法中各个步骤的内容相似,具体可以参阅图1及图2中各个步骤中描述的内容,此处不做赘述。
本发明通过对开发者的POJO实体类进行JAVA语法树分析并结合补充的必要信息快速生成mapper和表结构,是一个正向的生成过程,开发者不用担心代码覆盖问题,且开发过程中对POJO的修改不再需要对大量文件修改,可直接在代码进行修改,让开发者更专注于面对对象的设计,提高了开发效率。
图4示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是终端,也可以是服务器。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现年龄识别方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行年龄识别方法。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (9)

1.一种基于POJO的mybatis生成方法,所述方法包括以下步骤:
在JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统;
其中,所述通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义之后,还包括:
读取历史数据库表定义;
通过所述数据库表定义与所述历史数据库表定义对比生成alter或insert语句;
根据所述alter或insert语句修改所述数据库表定义对应的数据库表。
2.根据权利要求1所述方法,其特征在于,所述JAVA语法解析工具包括JAVAPARSER,则所述使用JAVA语法解析工具将所述POJO解析为JAVA语法树,包括:
读取包含所述POJO的JAVA文件;
使用所述JAVAPARSER将所述JAVA文件中的所述POJO解析为JAVA语法树。
3.根据权利要求1所述方法,其特征在于,所述通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义,包括:
对所述JAVA语法树进行分析及基于所述补充的数据库表结构的必要信息,读取class注释、POJO类名、field注释、field名称及field类型;
利用所述读取的class注释、POJO类名、field注释、field名称及field类型构建数据库表定义。
4.根据权利要求1所述方法,其特征在于,所述alter语句包括修改语句,insert语句包括创建表语句;则通过所述数据库表定义与所述历史数据库表定义对比生成alter或insert语句,根据所述alter或insert语句修改数据库表包括:
读取历史数据库表定义;
若存在历史数据库,则通过所述数据库表定义与所述历史数据库表定义对比生成修改语句,并利用所述修改语句修改所述数据库表定义对应的数据库表;
若不存在历史数据库,则通过所述数据库表定义与所述历史数据库表定义对比生成创建表语句,并利用所述创建表语句修改所述数据库表定义对应的数据库表。
5.根据权利要求1所述方法,其特征在于,所述通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis之后,并将所述mybatis写入文件系统之前还包括:
使用预设的前缀命名方式对所述mapper.JAVA进行命名,所述前缀命名方式区别于历史mapper.JAVA。
6.根据权利要求5所述方法,其特征在于,所述将所述mybatis写入文件系统之后,还包括:
所述历史mapper.JAVA继承生成的所述mapper.JAVA,其中,子类是所述历史mapper.JAVA,父类是生成的所述mapper.JAVA,所述继承包括所述子类拥有所述父类的所有功能。
7.一种基于POJO的mybatis生成系统,其特征在于,所述系统包括:
补充模块:在简单的JAVA对象POJO类名和属性上补充数据库表结构的必要信息,所述必要信息包括从JAVA中获取不到的数据库表结构的信息;
分析模块:用于使用JAVA语法解析工具将所述POJO解析为JAVA语法树;
构建模块:用于通过对所述JAVA语法树的分析以及所述补充的数据库表结构的必要信息,构建数据库表定义;
生成模块:用于通过所述数据库表定义,生成所述POJO与所述数据库表定义的映射mapper.JAVA及其mapper.xml文件,以生成所述mybatis,并将所述mybatis写入文件系统;
其中,所述系统还用于,读取历史数据库表定义;通过所述数据库表定义与所述历史数据库表定义对比生成alter或insert语句;根据所述alter或insert语句修改所述数据库表定义对应的数据库表。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6任一项所述方法的步骤。
9.一种基于POJO的mybatis生成设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
CN202011096401.3A 2020-10-14 2020-10-14 基于POJO的mybatis生成方法、系统、存储介质及设备 Active CN112306463B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011096401.3A CN112306463B (zh) 2020-10-14 2020-10-14 基于POJO的mybatis生成方法、系统、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011096401.3A CN112306463B (zh) 2020-10-14 2020-10-14 基于POJO的mybatis生成方法、系统、存储介质及设备

Publications (2)

Publication Number Publication Date
CN112306463A CN112306463A (zh) 2021-02-02
CN112306463B true CN112306463B (zh) 2024-02-20

Family

ID=74489758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011096401.3A Active CN112306463B (zh) 2020-10-14 2020-10-14 基于POJO的mybatis生成方法、系统、存储介质及设备

Country Status (1)

Country Link
CN (1) CN112306463B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114089979A (zh) * 2021-11-29 2022-02-25 中国联合网络通信集团有限公司 持久层代码更新方法、系统、终端设备及计算机存储介质
CN114756554B (zh) * 2022-06-13 2022-09-30 中建电子商务有限责任公司 一种基于MyBatis框架的数据查询处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN106844693A (zh) * 2017-01-24 2017-06-13 浙江大学 一种openEHR Template到关系数据库的转换方法
CN108536433A (zh) * 2018-04-16 2018-09-14 云南软捷科技有限公司 一种j2ee开发框架和基于该j2ee开发框架的开发方法
CN110674229A (zh) * 2019-09-24 2020-01-10 山东爱城市网信息技术有限公司 一种基于ast的关系型数据库sql表关系分析及展现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN106844693A (zh) * 2017-01-24 2017-06-13 浙江大学 一种openEHR Template到关系数据库的转换方法
CN108536433A (zh) * 2018-04-16 2018-09-14 云南软捷科技有限公司 一种j2ee开发框架和基于该j2ee开发框架的开发方法
CN110674229A (zh) * 2019-09-24 2020-01-10 山东爱城市网信息技术有限公司 一种基于ast的关系型数据库sql表关系分析及展现方法

Also Published As

Publication number Publication date
CN112306463A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
Nentwich et al. Flexible consistency checking
KR101143027B1 (ko) 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트
JP5431513B2 (ja) コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈
US7849437B2 (en) Object oriented web application framework
US7552452B2 (en) Safe, secure resource editing for application localization with language fallback
Xiong et al. Towards automatic model synchronization from model transformations
US6606632B1 (en) Transforming transient contents of object-oriented database into persistent textual form according to grammar that includes keywords and syntax
US6298354B1 (en) Mechanism and process to transform a grammar-derived intermediate form to an object-oriented configuration database
US6609130B1 (en) Method for serializing, compiling persistent textual form of an object-oriented database into intermediate object-oriented form using plug-in module translating entries according to grammar
US10083016B1 (en) Procedurally specifying calculated database fields, and populating them
US20030140045A1 (en) Providing a server-side scripting language and programming tool
US20090182710A1 (en) Calculating and Storing Data Structures
US20040015840A1 (en) Mechanism for converting between JAVA classes and XML
CN107924326A (zh) 对经更新的类型的迁移方法进行覆盖
CN112306463B (zh) 基于POJO的mybatis生成方法、系统、存储介质及设备
US7996416B2 (en) Parameter type prediction in object relational mapping
Long et al. Consistent code generation from UML models
CN113704706A (zh) 代码加固方法、装置
US9244706B2 (en) Command line shell command generation based on schema
US7418659B2 (en) System and method for declaring a resource within a markup document
Pientka et al. Semantical Analysis of Contextual Types.
Kalnins et al. Metamodel specialization for graphical modeling language support
CN112445499A (zh) 衍生变量确定方法、装置、设备和存储介质
Kramer et al. Reflection in attribute grammars
Weiher et al. Polymorphic identifiers: uniform resource access in objective-smalltalk

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