CN113742337A - 一种基于java注解生成数据库建表语句的方法及系统 - Google Patents
一种基于java注解生成数据库建表语句的方法及系统 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000002372 labelling Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 10
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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
- G06F8/315—Object-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项目正在朝着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代码中依次标注需要比对与数据库表差异的类、需要比对与数据库表字段差异的方法;
所述数据库表信息生成模块,还用于:
根据标注的所述需要生成数据库表的类、要比对与数据库表差异的类生成数据库表信息;
所述数据库表信息生成模块,用于:
根据标注的需要生成数据库表字段的方法及需要比对与数据库表字段差异的方法生成数据库表的相关信息;
所述对比模块,用于:
对比所述数据库表的相关信息与所述数据库中生成表的相关信息进行比对。
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) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN105069033A (zh) * | 2015-07-22 | 2015-11-18 | 北京京东尚科信息技术有限公司 | 一种创建数据库表模型的方法及装置 |
CN111143329A (zh) * | 2019-12-27 | 2020-05-12 | 中国银联股份有限公司 | 一种数据处理方法及装置 |
CN112506488A (zh) * | 2020-11-16 | 2021-03-16 | 贵阳语玩科技有限公司 | 一种基于sql创建语句生成编程语言类的方法 |
-
2021
- 2021-08-02 CN CN202110880827.6A patent/CN113742337A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN105069033A (zh) * | 2015-07-22 | 2015-11-18 | 北京京东尚科信息技术有限公司 | 一种创建数据库表模型的方法及装置 |
CN111143329A (zh) * | 2019-12-27 | 2020-05-12 | 中国银联股份有限公司 | 一种数据处理方法及装置 |
CN112506488A (zh) * | 2020-11-16 | 2021-03-16 | 贵阳语玩科技有限公司 | 一种基于sql创建语句生成编程语言类的方法 |
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 | |
CN110347598B (zh) | 一种测试脚本生成方法、装置、服务器及存储介质 | |
US20110202331A1 (en) | Method and software for extracting chemical data | |
CN106874163B (zh) | 一种显示软件错误码信息的方法及系统 | |
JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
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 | |
Phan et al. | Generating context-aware API calls from natural language description using neural embeddings and machine translation | |
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注解生成数据库建表语句的方法及系统 | |
Zhao et al. | A survey of automatic generation of code comments | |
CN116360794A (zh) | 数据库语言解析方法、装置、计算机设备及存储介质 | |
CN115688690A (zh) | 将Word文档内容转换成符合S1000D标准XML片段的动态转换方法 | |
CN106033338A (zh) | 基于fog数据的源代码导入及解析的方法和装置 | |
CN111898762B (zh) | 深度学习模型目录创建 | |
Goyal et al. | Forward-backward transliteration of punjabi gurmukhi script using n-gram language model | |
CN109614082B (zh) | 一种针对数据查询脚本的翻译方法、装置及设备 | |
CN109271392B (zh) | 快速判别和抽取关系型数据库实体及属性的方法及设备 | |
CN118170939B (zh) | 基于bim的设备位号编码方法、装置、设备及介质 | |
JP4588417B2 (ja) | 翻訳装置 | |
Bartgis | Towards an Assignment Description Language for Assignment Test Generation |
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 |