CN113885846A - 基于markdown格式数据字典的数据层代码生成方法 - Google Patents
基于markdown格式数据字典的数据层代码生成方法 Download PDFInfo
- Publication number
- CN113885846A CN113885846A CN202111174819.6A CN202111174819A CN113885846A CN 113885846 A CN113885846 A CN 113885846A CN 202111174819 A CN202111174819 A CN 202111174819A CN 113885846 A CN113885846 A CN 113885846A
- Authority
- CN
- China
- Prior art keywords
- file
- layer code
- outputting
- title
- reading
- 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
Images
Classifications
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供基于markdown格式数据字典的数据层代码生成方法,涉及软件开发技术领域。包括以下步骤:S1、读取配置的md文件列表,S2、按照配置的文件顺序读取md文件,以文本方式读入内存,S3、解析md文件,S4、根据表结构信息生成实体类文件,S5、根据表结构信息生成数据访问层代码。本本发明设计了一个markdown格式的数据字典文件,并以此文件为驱动,实现java实体类、数据访问层代码及SQL代码的自动生成,这样研发人员只需要更新数据,然后再以数据字典来生成代码即可,同时markdown文件是一个简单的文本文件,在git等版本管理工具中可以很好的展示表结构的变动情况。
Description
技术领域
本发明涉及软件开发技术领域,特别的为基于markdown格式数据字典的数据层代码生成方法。
背景技术
在开发软件过程中会不断的添加新的字段,并更新某些已存在的字段的数据类型。每当表结构有改动时,都需要将改动更新到数据字典,以保证表结构的一致性。而这个数据字典可能是一个word文件、一个excel文件,也有可能是一个pdm文件(powerDesigner建模文件)。而在团队开发的过程中,可能存在多个人改动表结构,这个时候就可能存在如下问题:
1、有人改动了表结构,但是漏更新了数据字典。
2、多个人同时更新数据字典,导致提交到版本库中时出现合并冲突。
3、数据字典的变动记录,只能通过人工登记,记录到变更记录表格中。
综上所述,研发基于markdown格式数据字典的数据层代码生成方法,仍是软件开发技术领域中急需解决的关键问题。
发明内容
本发明提供的了基于markdown格式数据字典的数据层代码生成方法,本发明设计了一个markdown格式的数据字典文件,并以此文件为驱动,实现java实体类、数据访问层代码及SQL代码的自动生成,这样研发人员只需要更新数据,然后再以数据字典来生成代码即可,同时markdown文件是一个简单的文本文件,在git等版本管理工具中可以很好的展示表结构的变动情况。
为实现以上目的,本发明通过以下技术方案予以实现:基于markdown格式数据字典的数据层代码生成方法,包括以下步骤:
S1、读取配置的md文件列表;
S2、按照配置的文件顺序读取md文件,以文本方式读入内存;
S3、解析md文件;
S4、根据表结构信息生成实体类文件;
S5、根据表结构信息生成数据访问层代码。
本发明进一步设置为:在S1操作步骤中,解析md文件,包括以下步骤:
S301、读取一级标题,识别出表名TM_USER;
S302、读取二级标题Columns,识别出表的字段信息;
S303、读取二级标题UniqueConstraints,识别出表的唯一性约束;
S304、读取二级标题Indexs,识别出表的索引信息。
本发明进一步设置为:在S301操作步骤中,所述一级标题为以“#”开头的标题。
本发明进一步设置为:在S302操作步骤中,所述二级标题Columns为以“##Columns”开头的标题。
本发明进一步设置为:在S303操作步骤中,所述二级标题UniqueConst raints为以“##UniqueConstraints”开头的标题。
本发明进一步设置为:在S304操作步骤中,所述二级标题Indexs为以“##Indexs”开头的标题
本发明进一步设置为:在S4操作步骤中,根据表结构信息生成实体类文件,包括以下步骤:
S401、输出包名;
S402、输出需要导入的包的信息;
S403、输出类名及相关注解;
S404、输出字段注释、注解或声明。
本发明进一步设置为:在S5操作步骤中,根据表结构信息生成数据访问层代码,包括以下步骤:
S501、输出包名;
S502、输出需要导入的包的信息;
S503、根据表名输出类的类名;
S504、输出find方法;
S505、完成文件输出。
本发明进一步设置为:在S504操作步骤中,输出find方法是指:
如果存在唯一约束,则根据唯一约束名称输出对于的find方法;
如果存在索引,则根据索引字段生成find方法。
本发明提供了基于markdown格式数据字典的数据层代码生成方法。具备以下有益效果:
本发明设计了一个markdown格式的数据字典文件,并以此文件为驱动,实现java实体类、数据访问层代码及SQL代码的自动生成,这样研发人员只需要更新数据,然后再以数据字典来生成代码即可,同时markdown文件是一个简单的文本文件,在git等版本管理工具中可以很好的展示表结构的变动情况。
附图说明
图1为本发明的流程图;
图2为md文件的格式图;
图3为md文件可视化的显示图;
图4为TABLE_LIST.md文件中md文件列表信息图;
图5为解析md文件的流程图;
图6为读取二级标题Columns的示意图;
图7为读取二级标题UniqueConstraints的示意图;
图8为读取二级标题Indexs的示意图;
图9为输出需要导入的包的信息的示意图;
图10为输出类名及相关注解的示意图;
图11为输出字段注释、注解或声明的示意图;
图12为生成字段对应的get、set方法的示意图;
图13为完成输出TmUser.jaya类文件的示意图;
图14为根据表结构信息生成数据访问层代码的流程图;
图15为步骤502中输出需要导入的包的信息的示意图;
图16为TmUserDao.java文件内容的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合实施例对本发明作进一步的描述。
实施例:
如图1-16所示,基于markdown格式数据字典的数据层代码生成方法,包括以下步骤:
步骤一、读取配置的md文件列表。
如图2-3所示,一级标题代表是表名,二级标题分为Columns、UniqueC onstraints和Indexs,分别代表字段列表、唯一约束列表和索引列表。从图2可以看出,可视化后的markdown文档更加的直观,可以快速的了解到一个表的表结构。
如图4所示,如读取TABLE_LIST.md文件中md文件列表(文件列表中的md文件和TABLE_LIST.md在同一目录下),以便后续步骤读取各个表结构信息,文件内容见图4。
每个表结构信息以独立的md文件存在,可以减低多人同时修改同一文件的概率,降低文件提交到git等仓库时的冲突率。
步骤二、按照配置的文件顺序读取md文件,以文本方式读入内存。
步骤三、解析md文件。
如图5所示,解析md文件,包括以下步骤:
301)、读取一级标题,识别出表名TM_USER。
302)、读取二级标题Columns,识别出表的字段信息。
303)、读取二级标题UniqueConstraints,识别出表的唯一性约束。
304)、读取二级标题Indexs,识别出表的索引信息。
一级标题为以“#”开头的标题。
二级标题Columns为以“##Columns”开头的标题。
二级标题UniqueConstraints为以“##UniqueConstraints”开头的标题。
二级标题Indexs为以“##Indexs”开头的标题。
如图6所示,在步骤302)中:i、以“-”开头的记录,说明该行为表格表格标题栏,下一行开始读取字段信息,ii、②以“”开头且已经读取过标题栏,则该行为字段信息,读取该行记录并以””线拆分,识别出字段信息。
如图7所示,在步骤303)中:i、①以“|-”开头的记录,说明该行为表格表格标题栏,下一行开始读取唯一性约束信息,ii、以“”开头且已经读取过标题栏,则该行为唯一性约束信息,读取该行记录并以”|”线拆分,识别出唯一性约束。
如图8所示,在步骤304)中:i、以“|-”开头的记录,说明该行为表格表格标题栏,下一行开始读取索引信息,ii、以“|”开头且已经读取过标题栏,则该行为索引信息,读取该行记录并以”|”线拆分,识别出索引信息。
该文件结构的优势在于:文件内容为普通文本,且字段信息、唯一约束信息、索引信息以行记录存在,便于版本更新信息前后版本比对。
步骤四、根据表结构信息生成实体类文件。
根据表结构信息生成实体类文件,包括以下步骤:
401)、输出包名。
402)、输出需要导入的包的信息。
403)、输出类名及相关注解。
404)、输出字段注释、注解或声明。
如图9所示,为输出需要导入的包的信息的示意图,如图10所示,根据表名生成java类名,并将表名转为驼峰命名格式,TM_USER转为TmUser,默认实现序列化接口及PrimaryKey接口。
如图11所示,根据字段信息生成实体类字段信息,并将字段名转为驼峰命名格式,如ID转为id,字段类型int转为Integer类型。
①、输出字段注释,将字段含义输出到注释中。
②、如果字段是主键,则添加注解@Id。
③、如果字段是自增长的,则添加注解@GeneratedValue(strategy=GenerationType.IDENTITY)。
④、如果是日期则添加@Temporal。
字段类型为date,则添加@Temporal(TemporalType.DATE)。
字段类型为time,则添加@Temporal(TemporalType.TIME)。
字段类型为timestamp、datetime,则添加@Temporal(TemporalType.TIMESTAMP)。
⑤、输出@Column枚举。
@Column包含name,nullable,length,precision,scale等几个重要属性。
name对应字段名。
nullable对于字段是否为空,true代表可为空,false代表非空。
length对应字段长度,主要用于字符串的长度控制。
precision对应字段长度,主要用于BigDecimal的长度控制。
scale对应小数位长度,主要用于BigDecimal的小数位控制。
ID字段名为ID,非空,则输出“@Column(name=″ID″,nullable=false)”。
⑥、输将数据库字段类型转换java类型,输出字段声明,字段映射关系如表1所示。
表1字段映射关系
数据库类型 | Java类型 |
char | java.lang.String |
varchar | java.lang.String |
character | java.lang.String |
decimal(p) | java.lang.Integer |
numeric(p) | java.lang.Integer |
decimal(p,s) | java.math.BigDecimal |
numeric(p,s) | java.math.BigDecimal |
Int | java.lang.Integer |
integer | java.lang.Integer |
bigint | java.lang.Long |
date | java.lang.Date |
time | java.lang.Date |
timestamp | java.lang.Date |
datetime | java.lang.Date |
clob | java.lang.String |
blob | java.lang.Byte[] |
如ID类型为int,则转换为java.1ang.Integer,输出为“private Int eger id;”。
⑦、生成字段对应的get、set方法,如图12所示。
⑧、完成输出TmUser.java类文件。
自动生成实体类的优势在于:自动生成的实体类能保证与表结构的一致性,避免了人工手写实体类的重复操作。
步骤五、根据表结构信息生成数据访问层代码。
根据表结构信息生成数据访问层代码,包括以下步骤:
501)、输出包名。
502)、输出需要导入的包的信息。
503)、根据表名输出类的类名。
504)、输出find方法。
505)、完成文件输出。
输出find方法是指:
如果存在唯一约束,则根据唯一约束名称输出对于的find方法;
如果存在索引,则根据索引字段生成find方法。
自动生成dao类的优势在于:自动生成的dao类避免了人工手写dao类的重复操作,默认继承JpaRepository接口及QueryDslPredicateExecutor接口,可以继承父接口中的增删改查等方法,省去了为每个dao类单独添加增删改查方法。只生成唯一约束对应的方法和索引的对应的方法,可以使类看起来更加简洁。
本发明设计了一个markdown格式的数据字典文件,并以此文件为驱动,实现java实体类、数据访问层代码及SQL代码的自动生成,这样研发人员只需要更新数据,然后再以数据字典来生成代码即可,同时markdown文件是一个简单的文本文件,在git等版本管理工具中可以很好的展示表结构的变动情况。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.基于markdown格式数据字典的数据层代码生成方法,其特征在于,包括以下步骤:
S1、读取配置的md文件列表;
S2、按照配置的文件顺序读取md文件,以文本方式读入内存;
S3、解析md文件;
S4、根据表结构信息生成实体类文件;
S5、根据表结构信息生成数据访问层代码。
2.根据权利要求1所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S1操作步骤中,解析md文件,包括以下步骤:
S301、读取一级标题,识别出表名TM_USER;
S302、读取二级标题Columns,识别出表的字段信息;
S303、读取二级标题UniqueConstraints,识别出表的唯一性约束;
S304、读取二级标题Indexs,识别出表的索引信息。
3.根据权利要求2所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S301操作步骤中,所述一级标题为以“#”开头的标题。
4.根据权利要求2所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S302操作步骤中,所述二级标题Columns为以“##Columns”开头的标题。
5.根据权利要求2所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S303操作步骤中,所述二级标题UniqueConstraints为以“##UniqueConstraints”开头的标题。
6.根据权利要求2所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S304操作步骤中,所述二级标题Indexs为以“##Indexs”开头的标题。
7.根据权利要求1所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S4操作步骤中,根据表结构信息生成实体类文件,包括以下步骤:
S401、输出包名;
S402、输出需要导入的包的信息;
S403、输出类名及相关注解;
S404、输出字段注释、注解或声明。
8.根据权利要求1所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S5操作步骤中,根据表结构信息生成数据访问层代码,包括以下步骤:
S501、输出包名;
S502、输出需要导入的包的信息;
S503、根据表名输出类的类名;
S504、输出find方法;
S505、完成文件输出。
9.根据权利要求8所述的基于markdown格式数据字典的数据层代码生成方法,其特征在于:在S504操作步骤中,输出find方法是指:
如果存在唯一约束,则根据唯一约束名称输出对于的find方法;
如果存在索引,则根据索引字段生成find方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111174819.6A CN113885846A (zh) | 2021-10-09 | 2021-10-09 | 基于markdown格式数据字典的数据层代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111174819.6A CN113885846A (zh) | 2021-10-09 | 2021-10-09 | 基于markdown格式数据字典的数据层代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113885846A true CN113885846A (zh) | 2022-01-04 |
Family
ID=79005715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111174819.6A Pending CN113885846A (zh) | 2021-10-09 | 2021-10-09 | 基于markdown格式数据字典的数据层代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885846A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117406973A (zh) * | 2023-12-13 | 2024-01-16 | 上海群之脉信息科技有限公司 | 一种交互式数据分析的方法及装置 |
-
2021
- 2021-10-09 CN CN202111174819.6A patent/CN113885846A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117406973A (zh) * | 2023-12-13 | 2024-01-16 | 上海群之脉信息科技有限公司 | 一种交互式数据分析的方法及装置 |
CN117406973B (zh) * | 2023-12-13 | 2024-03-12 | 上海群之脉信息科技有限公司 | 一种交互式数据分析的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7512633B2 (en) | Conversion of hierarchically-structured HL7 specifications to relational databases | |
US7720789B2 (en) | System and method of member unique names | |
US8886617B2 (en) | Query-based searching using a virtual table | |
US20100100815A1 (en) | Email document parsing method and apparatus | |
US10055429B2 (en) | Generating a schema of a not-only-structured-query-language database | |
US9665607B2 (en) | Methods and apparatus for organizing data in a database | |
US20050183002A1 (en) | Data and metadata linking form mechanism and method | |
US20060173927A1 (en) | Extensible Decimal Identification System for Ordered Nodes | |
KR960706138A (ko) | 관계형 데이타베이스 스키마를 생성하기 위한 의미 객체 모델링 시스템(semantic object modeling system for creating relational database schemas) | |
CN104769588B (zh) | 队列识别系统 | |
CN111104525B (zh) | 一种基于图数据库的建筑设计规范知识图谱构建方法 | |
WO2021086735A1 (en) | Document annotation based on enterprise knowledge graph | |
CN111324631B (zh) | 一种将查询数据的人类自然语言自动生成sql语句的方法 | |
US20060026204A1 (en) | System and method for automatic terminology discovery | |
Najjar et al. | Towards Interoperable Learning Object Repositories: The Ariadne Experience. | |
US20170242907A1 (en) | Processing a data set that is not organized according to a schema being used for organizing data | |
CN113885846A (zh) | 基于markdown格式数据字典的数据层代码生成方法 | |
US20080294673A1 (en) | Data transfer and storage based on meta-data | |
US20140229815A1 (en) | Computerised data entry form processing | |
EP2169562A1 (en) | Partial parsing method, based on calculation of string membership in a fuzzy grammar fragment | |
US20070299676A1 (en) | System and method of member unique names | |
Černjeka et al. | NoSQL document store translation to data vault based EDW | |
CN115033648A (zh) | 系统化医学领域知识图谱的构建方法及装置 | |
Berrington | Databases | |
CN105447609A (zh) | 用于处理案例管理模型的方法、装置和系统 |
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 |