数据库表设计生成代码

简介: BizWorks ToolKit插件集成Mybatis-Plus代码生成工具,支持从数据库表生成代码,便于研发过程中数据模型变更后的代码同步。本文介绍批量生成代码的方法、配置说明及项目示例。配置文件`*.mp.yaml`用于描述生成行为,可放置于`src/main/resource/bizworks/mybatis-plus/`路径下。配置包括数据库信息、输出目录及包名等。通过IDEA右键菜单即可启动代码生成。具体配置和示例详见文档。

为了便于在研发过程中数据模型(数据库表设计)变更后即时做代码同步,BizWorks ToolKit插件集成了Mybatis-Plus代码生成工具,支持从数据库表生成代码。本文介绍如何从数据库表批量生成代码,以及相应的配置说明和项目示例。

从数据库表批量生成代码的配置说明
重要
配置值需用半角双引号("")包含。

BizWorks ToolKit插件使用配置文件(*.mp.yaml)的方式描述MyBatis-Plus代码生成行为。通常这个配置文件只需配置一次,即可提交到代码仓库共享,便于沉淀维护库表映射到代码的规则。

配置文件在代码中没有预置,如果您需要使用可以在项目的任意位置新建,推荐您将其存放于src/main/resource/bizworks/mybatis-plus/路径下。

说明
以下规则只符合平台的MVC代码模板,代码模板不匹配情况不适用。generateAllCode默认值为false。

如果generateAllCode设置为true, 则会生成所有的代码(controller,service,do,dto,mapper,impl..)。

如果generateAllCode设置为false,则只会生成dao层代码(mapper,do)。

最简配置示例如下。代码效果参考:https://www.weibow.com/sitemap/post.xml
bizworks:
generator:
mybatisPlusFromDB:

数据库配置信息

dataSource:
url:
username:
password:
global:

# 指定输出目录,默认值: ${vcsRoot}/mybatis-plus-default/
  # ${vcsRoot} 为代码仓库根目录
outputDir: ${vcsRoot}/mybatis-plus-default/

packageConfig:

# 父包名,默认值:com.bizworks.example.domain.tunnel
parent: com.bizworks.example.domain.tunnel

strategy:
generateAllCode: false

# 配置需要生成的表,如果未配置,则生成数据库下所有表
includes:
  - "demo_table"

上述配置示例完善后即可生成demo_table对应的代码。您也可以不配置以生成全表所有库,或是配置更多紧密相关的表在一个文件同时生成,其他表则配置在其他文件中。

关于完整版配置示例,请参见生成代码完整版配置。

从数据库表批量生成代码
打开IDEA,您可以通过以下两种方式从数据库表批量生成代码。

在左侧导航栏,右键单击配置文件(*.mp.yaml)后,选择BizWorks > Mybatis-Plus生成。image.png

在打开的配置文件(*.mp.yaml)中,单击右键后,选择BizWorks > Mybatis-Plus生成。image.png

项目示例
如果您有一个多模块项目,您可将配置文件放置于starter的/resource/bizworks路径下,例如下图中simplification.mp.yaml。1

右键单击配置文件simplification.mp.yaml后,选择从配置文件生成Mybatis-Plus。

如果您只配置了数据库信息,没有配置输出目录以及需要生成的表(如第1步中的图片所示)。IDEA则会根据默认输出目录输出生成文件,且会将数据库中所有表都生成,具体如下图所示。

默认输出目录:项目根目录/mybatis-plus-default/com/bizworks/example/domain/tunnel。1

如果您想将文件生成到某个模块的某个包下,您可以配置输出目录以及Package进行准确位置的输出,例如:通过配置includes进行准确文件的输出。

以步骤1图中的项目为例,假设您想生成一个表到businessdomain-ninethreezerodomain\ninethreezerodomain-app路径下,您可以通过配置outputDir以及packageConfig.parent进行生成输出目录的配置,如下代码outputDir,parent所示,配置includes进行表的选择,具体请参见如下代码示例。

bizworks:
generator:
mybatisPlusFromDB:

数据库配置信息

dataSource:
url:
username:
password:
global:

# 指定输出目录,默认值: ${vcsRoot}/mybatis-plus-default/
  # ${vcsRoot} 为项目根目录
outputDir: ${vcsRoot}/businessdomain-ninethreezerodomain/ninethreezerodomain-app/src/main/java

packageConfig:

# 父包名,默认值:com.bizworks.example.domain.tunnel
parent: ninegroup.generator.businessdomain.ninethreezerodomain.app.mybatisplus.generator

strategy:
generateAllCode: false

# 配置需要生成的表,如果未配置,则生成数据库下所有表
includes:
  - "biz_modelcenter_app"

生成结果如下图所示。1

如果您想了解更多的自定义配置,例如:是否启用swagger,是否启用lombok,controller格式化命名等配置,请参见生成代码完整版配置。

生成代码精简版配置
生成代码精简版配置的代码示例如下:

bizworks:
generator:
mybatisPlusFromDB:

数据库配置信息

dataSource:
url:
username:
password:
global:

# 指定输出目录,默认值: ${vcsRoot}/mybatis-plus-default/
# ${vcsRoot} 为项目根目录
outputDir:

packageConfig:

# 父包名,默认值:com.bizworks.example.domain.tunnel
parent:

strategy:
generateAllCode: false

# 配置需要生成的表,如果未配置,则生成数据库下所有表
includes:
  - ""

生成代码完整版配置
生成代码完整版配置的代码示例如下:

bizworks:
generator:
mybatisPlusFromDB:

数据库配置信息

dataSource:
url:
username:
password:
schemaName: ""
global:

#    禁止打开输出目录    默认值:true,true = 不打开,false = 打开
disableOpenDir: true
#    指定输出目录 默认值: ${vcsRoot}/mybatis-plus-default/
  # ${vcsRoot} 为项目根目录
outputDir:
#    作者名    默认值:BizWorks Toolkit
author: BizWorks Toolkit
#    开启 kotlin 模式    默认值:false,false = 不开启,true = 开启
enableKotlin: false
#    开启 swagger 模式    默认值:false,false = 不开启,true = 开启
enableSwagger: false
#    时间策略    DateType.ONLY_DATE 默认值: DateType.TIME_PACK
dateType: TIME_PACK
#    注释日期    默认值: yyyy-MM-dd
commentDate: yyyy-MM-dd

packageConfig:

# 父包名    默认值:com.bizworks.example.domain.tunnel
parent:
# 父包模块名    默认值:无
moduleName: ""
# Entity 包名    默认值:entity
entity: entity
# Service 包名    默认值:service
service: service
# Service Impl 包名    默认值:service.impl
serviceImpl: service.impl
# Mapper 包名    默认值:mapper
mapper: mapper
# Mapper XML 包名    默认值:mapper.xml
xml: mapper.xml
# Controller 包名    默认值:controller
controller: controller
# 路径配置信息 以xml为例:${vcsRoot}/模块名/src/main/resources
pathInfo:
  parent:
  entity:
  service:
  serviceImpl:
  mapper:
  xml:
  controller:

template:

# 启用模板, list,不在此列的不会生成相关模板,默认开启ENTITY,MAPPER  关闭SERVICE,SERVICE_IMPL,CONTROLLER,XML
enable:
  - ENTITY
  - MAPPER
#(String)    设置实体模板路径(JAVA)    例:${vcsRoot}/templates/entity.java
entity:
#(String)    设置实体模板路径(kotlin)    /templates/entity.java
entityKt:
#(String)    设置 service 模板路径    /templates/service.java
service:
#(String)    设置 serviceImpl 模板路径    /templates/serviceImpl.java
serviceImpl:
#(String)    设置 mapper 模板路径    /templates/mapper.java
mapper:
#(String)    设置 mapperXml 模板路径    /templates/mapper.xml
mapperXml:
#(String)    设置 controller 模板路径    /templates/controller.java
controller:

strategy:
generateAllCode: false

#     开启大写命名    默认值:false
enableCapitalMode: false
#     开启跳过视图    默认值:false
enableSkipView: false
#     禁用 sql 过滤    默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关
disableSqlFilter: true
#     启用 schema    默认值:false,多 schema 场景的时候打开
enableSchema: false
# (LikeTable)    模糊表匹配(sql 过滤)    likeTable 与 notLikeTable 只能配置一项
likeTable:
# (LikeTable)    模糊表排除(sql 过滤)    likeTable 与 notLikeTable 只能配置一项
notLikeTable:
# (String...)    配置需要生成的表    includes 与 excludes 只能配置一项
includes:
  - ""
# (String...)    增加表排除匹配(内存过滤)    includes 与 excludes 只能配置一项
excludes:
  - ""
# (String...)    增加过滤表前缀
tablePrefix:
  - ""
# (String...)    增加过滤表后缀
tableSuffix:
  - ""
# (String...)    增加过滤字段前缀
fieldPrefix:
  - ""
# (String...)    增加过滤字段后缀
fieldSuffix:
  - ""
#     实体策略配置
entity:
  #覆盖已生成文件 默认false,false = 不覆盖,true = 覆盖
  enableFileOverride: false
  # (INameConvert)    名称转换实现
  nameConvert:
  # (String)    设置父类    com.baomidou.global.BaseEntity
  superClass:
  # 禁用生成 serialVersionUID    默认值:true,true = 不生成serID,false = 生成
  disableSerialVersionUID: true
  # 开启生成字段常量    默认值:false
  enableColumnConstant: false
  # 开启链式模型    默认值:false
  enableChainModel: false
  # 开启 lombok 模型    默认值:true,true = 开启,false = 不开启
  enableLombok: true
  # 开启 Boolean 类型字段移除 is 前缀    默认值:false
  enableRemoveIsPrefix: false
  # 开启生成实体时生成字段注解    默认值:true
  enableTableFieldAnnotation: true
  # 开启 ActiveRecord 模型    默认值:false
  enableActiveRecord: false
  # (String)    乐观锁字段名(数据库)
  versionColumnName:
  # (String)    乐观锁属性名(实体)
  versionPropertyName:
  # (String)    逻辑删除字段名(数据库)
  logicDeleteColumnName:
  # (String)    逻辑删除属性名(实体)
  logicDeletePropertyName:
  # 数据库表映射到实体的命名策略    默认下划线转驼峰命名:NamingStrategy.underline_to_camel
  naming: underline_to_camel
  # 数据库表字段映射到实体的命名策略    默认为 null,未指定按照 naming 执行
  columnNaming:
  # (String...)    添加父类公共字段
  superEntityColumns:
    - ""
    - ""
  # (String...)    添加忽略字段
  ignoreColumns:
    - ""
    - ""
  # (IdType)    全局主键类型
  idType:
  # (String)    格式化文件名称
  formatFileName:
#     controller 策略配置
controller:
  #覆盖已生成文件 默认false不覆盖
  enableFileOverride: false
  # (String)    默认true 不生成controller
  disable: true
  # (String)    设置父类    com.baomidou.global.BaseController
  superClass: ""
  #     开启驼峰转连字符    默认值:false
  enableHyphenStyle: false
  #     开启生成@RestController 控制器    默认值:false
  enableRestStyle: false
  # (String)    格式化文件名称
  formatFileName:
#     service 策略配置
service:
  #覆盖已生成文件 默认false不覆盖
  enableFileOverride: false
  #(String)    设置 service 接口父类    com.baomidou.global.BaseService
  superServiceClass:
  #(String)    设置 service 实现类父类    com.baomidou.global.BaseServiceImpl
  superServiceImplClass:
  #(String)    格式化 service 接口文件s名称
  formatServiceFileName:
  #(String)    格式化 service 实现类文件名称
  formatServiceImplFileName:
#     mapper 策略配置
mapper:
  #覆盖已生成文件 默认false不覆盖
  enableFileOverride: false
  #(String)    设置父类     默认:com.baomidou.mybatisplus.core.mapper.BaseMapper
  superClass: "com.baomidou.mybatisplus.core.mapper.BaseMapper"
  #    开启 @Mapper 注解    annotationClass – 注解Class 默认为 org.apache.ibatis.annotations.Mapper
  mapperAnnotation: org.apache.ibatis.annotations.Mapper
  #    启用 BaseResultMap 生成    默认值:false
  enableBaseResultMap: false
  #    启用 BaseColumnList    默认值:false
  enableBaseColumnList: false
  #(Class<? extends Cache>)    设置缓存实现类    MyMapperCache.class
  cache:
  #(String)    格式化 mapper 文件名称
  formatMapperFileName:
  #(String) 格式化 xml 实现类文件名称
  formatXmlFileName:
相关文章
|
8天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
24 6
|
10天前
|
前端开发 数据库 开发者
数据模型(数据库表设计)生成代码
BizWorks ToolKit 插件集成 Mybatis-Plus 代码生成工具,支持从数据库表批量生成代码,简化开发流程。本文详细介绍配置方法及项目示例,包括配置文件格式、生成选项及具体操作步骤,帮助开发者快速实现代码同步更新。配置文件 `.mp.yaml` 支持自定义输出目录、生成组件等,适用于多种项目结构。
23 0
|
10天前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
19 0
|
14天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
30 0
|
18天前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
38 0
|
18天前
|
开发者 前端开发 JavaScript
如何解锁Play Framework的模块化力量?揭秘构建未来Web应用的关键策略
【8月更文挑战第31天】在现代软件开发中,模块化设计对于构建可维护和可扩展的应用程序至关重要。Play Framework作为一个高性能Web应用框架,提供了强大的模块化支持,使开发者能够将应用分解为独立且可重用的模块。本文将探讨Play Framework中模块化设计的最佳实践,并通过示例代码展示如何创建模块、使用依赖注入管理模块依赖、模块化前端资源及测试模块,帮助开发者构建结构清晰、易于维护和扩展的应用程序。
27 0
|
18天前
|
数据库 Java 数据库连接
玩转Play Framework的秘密武器:Ebean ORM带你解锁高效数据库操作新姿势,让你的代码从此飞起来!
【8月更文挑战第31天】Play Framework 以其简洁的 API 和高效开发体验著称,Ebean ORM 则是其推荐的对象关系映射(ORM)工具之一。Ebean 可将 Java 对象轻松映射到数据库表,简化数据库交互。本文将指导你在 Play Framework 中使用 Ebean ORM 进行数据库操作,涵盖项目创建、依赖引入、数据库配置、模型定义及 CRUD 操作,并通过示例代码展示实现过程。通过这些步骤,你将学会如何利用 Ebean 的丰富功能,如事务管理、查询构建等,提升 Web 应用的数据库交互能力。
26 0
|
18天前
|
数据库 开发者
从EF6无缝切换到Entity Framework Core:一份详尽无遗的开发者实战攻略,带你领略数据库操作的全新境界,让代码优雅转身,性能与可维护性双丰收的秘密武器
【8月更文挑战第31天】本文通过详细的代码示例,介绍了如何将基于 EF6 的应用程序平滑迁移到 EF Core。从创建初始 EF6 项目并定义数据库上下文开始,逐步演示了如何使用 EF6 进行数据操作。随后,文章详细讲解了迁移到 EF Core 的步骤,包括配置 EF Core 数据库上下文、定义领域模型及数据操作等。通过具体示例,展示了 EF Core 的强大功能,帮助开发者构建高效且可扩展的数据访问层。
23 0
|
3天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
46 11
|
22天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~