CN113742337A - 一种基于java注解生成数据库建表语句的方法及系统 - Google Patents

一种基于java注解生成数据库建表语句的方法及系统 Download PDF

Info

Publication number
CN113742337A
CN113742337A CN202110880827.6A CN202110880827A CN113742337A CN 113742337 A CN113742337 A CN 113742337A CN 202110880827 A CN202110880827 A CN 202110880827A CN 113742337 A CN113742337 A CN 113742337A
Authority
CN
China
Prior art keywords
database table
database
generating
field
needing
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
Application number
CN202110880827.6A
Other languages
English (en)
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.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information 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 Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN202110880827.6A priority Critical patent/CN113742337A/zh
Publication of CN113742337A publication Critical patent/CN113742337A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于JAVA注解生成数据库建表语句的方法及系统,涉及数据库开发技术领域,包括:在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;编写模板代码扫描java代码;根据标注的需要生成数据库表的类生成数据库表信息;根据标注的需要生成数据库表字段的方法生成表字段信息;根据数据库表信息和表字段信息生成建表语句。本发明在编写java代码过程中,直接对数据库进行设计,通过注解标注的方式在java代码中标注需要生成数据库表的类以及在类里面的字段上标注需要生成数据库表字段的方法,进而在开发完成后利用Java反射功能,通过扫描Java代码直接得到数据库建表语句,大量的节省开发人员的时间。

Description

一种基于JAVA注解生成数据库建表语句的方法及系统
技术领域
本发明涉及数据库开发技术领域,尤其是涉及一种基于JAVA注解生成数据库建表语句的方法及系统。
背景技术
随着基于数据库的java项目越来越丰富,java项目正在朝着docker化、微服务化方向发展,因此,对于快速开发也有了更高的要求。
目前现有的传统开发过程是先设计数据库结构,再根据数据库结构开发代码,这种串行的开发过程使开发速度慢,开发效率低。
发明内容
针对上述问题,本发明提供了一种基于JAVA注解生成数据库建表语句的方法及系统,在编写java代码过程中,同时对数据库进行设计,通过注解标注的方式在java代码开发完成后即可得到数据库建表语句,进而得到数据库,大量的节省开发人员的时间。
为实现上述目的,本发明提供了面向JAVA组件的源码深度监控方法,包括:
在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;
编写模板代码扫描所述java代码;
根据标注的所述需要生成数据库表的类生成数据库表信息;
根据标注的所述需要生成数据库表字段的方法生成表字段信息;
根据所述数据库表信息和所述表字段信息生成建表语句。
作为本发明的进一步改进,使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
作为本发明的进一步改进,所述@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;
其中,Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
作为本发明的进一步改进,所述@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;
其中,Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
作为本发明的进一步改进,在java代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
编写模板代码扫描所述java代码;
根据标注的需要生成数据库表的类、需要生成数据库表字段的方法及需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法生成数据库表的相关信息;
对比所述数据库表的相关信息与所述数据库中生成表的相关信息进行比对。
本发明还提供了一种基于JAVA注解生成数据库建表语句的系统,包括:标注模块、扫描模块、数据库表信息生成模块、表字段生成模块和建表语句生成模块;
所述标注模块,用于:
在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;
所述扫描模块,用于:
编写模板代码扫描所述java代码;
所述数据库表信息生成模块,用于:
根据标注的所述需要生成数据库表的类生成数据库表信息;
所述数据库表信息生成模块,用于:
根据标注的所述需要生成数据库表字段的方法生成表字段信息;
所述建表语句生成模块,用于:
根据所述数据库表信息和所述表字段信息生成建表语句。
作为本发明的进一步改进,使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
作为本发明的进一步改进,所述@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;
其中,Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
作为本发明的进一步改进,所述@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;
其中,Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
作为本发明的进一步改进,还包括对比模块;
所述标注模块,还用于:
在java代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
所述数据库表信息生成模块,还用于:
根据标注的所述需要生成数据库表的类、要比对与数据库表差异的类生成数据库表信息;
所述数据库表信息生成模块,用于:
根据标注的需要生成数据库表字段的方法及需要比对与数据库表字段差异的方法生成数据库表的相关信息;
所述对比模块,用于:
对比所述数据库表的相关信息与所述数据库中生成表的相关信息进行比对。
与现有技术相比,本发明的有益效果为:
本发明在编写java代码过程中,直接对数据库进行设计,通过注解标注的方式在java代码中标注需要生成数据库表的类以及在类里面的字段上标注需要生成数据库表字段的方法,进而在开发完成后利用Java反射功能,通过扫描Java代码直接得到数据库建表语句,进而得到数据库,大量的节省开发人员的时间,实现了快速根据java代码生成建表语句。
本发明中还在Java代码编写完成后,对java代码进行修改、增加的过程中,标注了需要比对与数据库表差异的类以及在类里面的字段上标注了需要比对与数据库表字段差异的方法,进而在java代码修改、增加完成后,获取到修改后的数据库表信息,便于与数据库中的生成表信息进行比对,帮助数据库表的修改。
附图说明
图1为本发明一种实施例公开的基于JAVA注解生成数据库建表语句的方法流程图;
图2为本发明一种实施例公开的基于JAVA注解生成数据库建表语句的系统示意图;
图3为本发明一种实施例公开的基于JAVA注解生成数据库建表语句的方法详细流程图;
图4为本发明一种实施例公开的基于JAVA注解比对代码中数据库表信息与数据库中生成表信息的详细流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
如图1、3所示,本发明提供的一种基于JAVA注解生成数据库建表语句的方法,包括:
S1、在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;
其中,
使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
进一步的,
@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
S2、编写模板代码扫描java代码;
S3、根据标注的需要生成数据库表的类生成数据库表信息;
其中,包括:
获取数据库表的名称;
S4、根据标注的需要生成数据库表字段的方法生成表字段信息;
其中,包括:
获取数据库表的字段名称、类型、长度。
S5、根据数据库表信息和表字段信息生成建表语句。
其中,根据获取需要还可以根据数据库表信息和表字段信息获取基本操作SQL。
本发明中,在java代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
编写模板代码扫描java代码;
如图4所示,,根据@TableDesc注解标注的需要生成数据库表的类、@TableFieldDesc注解标注的需要生成数据库表字段的方法及@TableDesc注解标注的需要比对与数据库表差异的类、@TableFieldDesc注解标注的需要比对与数据库表字段差异的方法生成数据库表的相关信息;
同时,加载数据库中相关的数据表的字典、加载数据库中相关的数据字段的字典,得到数据库中生成表的相关信息;
对比数据库表的相关信息与数据库中生成表的相关信息进行比对;若比对结果不一致,则给出修改建议,如在数据库中生成表的相关信息中增加缺少的差异内容。
如图2所示,本发明还提供了一种基于JAVA注解生成数据库建表语句的系统,包括:标注模块、扫描模块、数据库表信息生成模块、表字段生成模块、建表语句生成模块和对比模块;
标注模块,用于:
在java代码中依次标注需要生成数据库表的类、需要生成数据库表字段的方法、需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
其中,
使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;
Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
扫描模块,用于:
编写模板代码扫描java代码;
数据库表信息生成模块,用于:
java代码中没标注需要比对与数据库表差异的类时,根据标注的需要生成数据库表的类生成数据库表信息;
java代码中也标注有需要比对与数据库表差异的类时,根据标注的需要生成数据库表的类、需要比对与数据库表差异的类生成数据库表信息;
数据库表信息生成模块,用于:
java代码中没标注需要比对与数据库表字段差异的方法时,根据标注的需要生成数据库表字段的方法生成表字段信息;
java代码中标注有需要比对与数据库表字段差异的方法时,根据标注的需要生成数据库表字段的方法及需要比对与数据库表字段差异的方法生成数据库表的相关信息;
建表语句生成模块,用于:
根据数据库表信息和表字段信息生成建表语句。
对比模块,用于:
对比数据库表的相关信息与数据库中生成表的相关信息进行比对;
若比对结果不一致,则给出修改建议,如在数据库中生成表的相关信息中增加缺少的差异内容。
本发明的优点:
(1)在编写java代码过程中,直接对数据库进行设计,通过注解标注的方式在java代码中标注需要生成数据库表的类以及在类里面的字段上标注需要生成数据库表字段的方法,进而在开发完成后利用Java反射功能,通过扫描Java代码直接得到数据库建表语句,进而得到数据库,大量的节省开发人员的时间,实现了快速根据java代码生成建表语句。
(2)还在Java代码编写完成后,对java代码进行修改、增加的过程中,标注了需要比对与数据库表差异的类以及在类里面的字段上标注了需要比对与数据库表字段差异的方法,进而在java代码修改、增加完成后,获取到修改后的数据库表信息,便于与数据库中的生成表信息进行比对,帮助数据库表的修改。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于JAVA注解生成数据库建表语句的方法,其特征在于,包括:
在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;
编写模板代码扫描所述java代码;
根据标注的所述需要生成数据库表的类生成数据库表信息;
根据标注的所述需要生成数据库表字段的方法生成表字段信息;
根据所述数据库表信息和所述表字段信息生成建表语句。
2.根据权利要求1所述的方法,其特征在于:使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
3.根据权利要求2所述的方法,其特征在于,所述@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;
其中,Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
4.根据权利要求1所述的方法,其特征在于:所述@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;
其中,Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
5.根据权利要求1所述的方法,其特征在于:在java代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
编写模板代码扫描所述java代码;
根据标注的需要生成数据库表的类、需要生成数据库表字段的方法及需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法生成数据库表的相关信息;
对比所述数据库表的相关信息与所述数据库中生成表的相关信息进行比对。
6.一种用于实现权利要求1~5任一项所述的方法的系统,其特征在于,包括:标注模块、扫描模块、数据库表信息生成模块、表字段生成模块和建表语句生成模块;
所述标注模块,用于:
在java代码中依次标注需要生成数据库表的类及需要生成数据库表字段的方法;
所述扫描模块,用于:
编写模板代码扫描所述java代码;
所述数据库表信息生成模块,用于:
根据标注的所述需要生成数据库表的类生成数据库表信息;
所述数据库表信息生成模块,用于:
根据标注的所述需要生成数据库表字段的方法生成表字段信息;
所述建表语句生成模块,用于:
根据所述数据库表信息和所述表字段信息生成建表语句。
7.根据权利要求6所述的系统,其特征在于,使用@TableDesc注解标注需要生成数据库表的类;使用@TableFieldDesc注解标注需要生成数据库表字段的方法。
8.根据权利要求7所述的系统,其特征在于:所述@TableDesc注解包括三项配置,分别是:Name、Node和isPublic;
其中,Name表示数据库表的名称,Node表示数据库表中文名称或备注,isPublic表示是否需要建立同义词。
9.根据权利要求6所述的系统,其特征在于:所述@TableFieldDesc注解包括四项配置,分别是:Index、Type、Length和Note;
其中,Index表示是否需要建立索引,或者索引的类型;Type表示数据库字段的类型;Length表示数据库字段的长度;Note表示数据库字段中文名称或者备注。
10.根据权利要求6所述的系统,其特征在于:还包括对比模块;
所述标注模块,还用于:
在java代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
所述数据库表信息生成模块,还用于:
根据标注的所述需要生成数据库表的类、要比对与数据库表差异的类生成数据库表信息;
所述数据库表信息生成模块,用于:
根据标注的需要生成数据库表字段的方法及需要比对与数据库表字段差异的方法生成数据库表的相关信息;
所述对比模块,用于:
对比所述数据库表的相关信息与所述数据库中生成表的相关信息进行比对。
CN202110880827.6A 2021-08-02 2021-08-02 一种基于java注解生成数据库建表语句的方法及系统 Pending CN113742337A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110880827.6A CN113742337A (zh) 2021-08-02 2021-08-02 一种基于java注解生成数据库建表语句的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110880827.6A CN113742337A (zh) 2021-08-02 2021-08-02 一种基于java注解生成数据库建表语句的方法及系统

Publications (1)

Publication Number Publication Date
CN113742337A true CN113742337A (zh) 2021-12-03

Family

ID=78729718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110880827.6A Pending CN113742337A (zh) 2021-08-02 2021-08-02 一种基于java注解生成数据库建表语句的方法及系统

Country Status (1)

Country Link
CN (1) CN113742337A (zh)

Similar Documents

Publication Publication Date Title
Hu et al. Deep code comment generation
Howard et al. Automatically mining software-based, semantically-similar words from comment-code mappings
Padró et al. Freeling 3.0: Towards wider multilinguality
CN110347598B (zh) 一种测试脚本生成方法、装置、服务器及存储介质
US20110202331A1 (en) Method and software for extracting chemical data
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN106874163B (zh) 一种显示软件错误码信息的方法及系统
Zhang et al. Automatically generating test templates from test names (n)
Antony et al. Computational morphology and natural language parsing for Indian languages: a literature survey
Kuramitsu Nez: practical open grammar language
Cooke-Fox et al. Computer translation of IUPAC systematic organic chemical nomenclature. 3. Syntax analysis and semantic processing
CN113138755A (zh) 一种json序列化和反序列化的优化方法及系统
CN109471637B (zh) 电路图的审查脚本调试方法
CN113742337A (zh) 一种基于java注解生成数据库建表语句的方法及系统
CN116360794A (zh) 数据库语言解析方法、装置、计算机设备及存储介质
Phan et al. Generating context-aware API calls from natural language description using neural embeddings and machine translation
CN106033338A (zh) 基于fog数据的源代码导入及解析的方法和装置
CN111898762B (zh) 深度学习模型目录创建
Goyal et al. Forward-backward transliteration of punjabi gurmukhi script using n-gram language model
CN109614082B (zh) 一种针对数据查询脚本的翻译方法、装置及设备
CN109271392B (zh) 快速判别和抽取关系型数据库实体及属性的方法及设备
JP4588417B2 (ja) 翻訳装置
Bartgis Towards an Assignment Description Language for Assignment Test Generation
Oudshoorn et al. Language definition and implementation
Otten et al. Towards a Universal Python: Translating the Natural Modality of Python into Other Human Languages

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