乐趣区

关于java:基于MybatisPlus代码生成器20新版本

一、模块简介

1、性能亮点

实时读取库表构造元数据信息,比方表名、字段名、字段类型、正文等,选中批改后的表,点击 一键生成,代码成即可提现出表构造的变动。

单表疾速转化 restful 格调的 API 接口并对外裸露服务。对于百余张表的数据库,应用代码生成器让开发事倍功半。

多表连贯查问。多表连贯查问默认不开启,须要在全局文件中手动配置。

开启多表连贯查问后,代码生成器会主动读取数据库元数据信息中的 主外键关系 ,别离生成 一对一 一对多 多对多 格调的源代码。

生成的代码接口可通过 Swagger 裸露。

2、运行依赖服务

代码生成器运行依赖Mysql 数据库,版本不限。

  • Mysql 数据库

Mysql 数据库中库表构造为用户自定义的库表,代码生成将会读取。我的项目 SQL 脚本提供 5 张测试表,不便用于测试应用。

3、代码生成器 2.0

代码生成器降级内容如下:

  • 移除 Redis 服务强依赖
  • 移除登陆依赖
  • 移除零碎 SQL 脚本依赖

以后代码生成器属于 2.0 版本。

二、两种典型应用场景

(一)克隆 Demo 我的项目

应用 demo 脚手架 cms demo 我的项目,脚手架是规范的 Spring Web 工程,略微批改配置文件可疾速入门上手。

# 拉去脚手架,并初始化我的项目
git clone https://gitee.com/decsa/demo-code.git
1、批改数据库连贯配置

运行测试 SQL 脚本,增加数据库表构造,开始体验代码生成的性能。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ucode-cms
    username: root
    password: 123456
2、增加依赖

查看 pom 文件中是否蕴含代码生成器 Maven 包依赖,如果没有,则增加如下依赖

<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-code-spring-boot-starter</artifactId>
    <version>1.5.6.1</version>
</dependency>
3、可视化界面

配置完上述连贯后,启动我的项目。拜访 http://localhost:8080 进入控制台界面。

点击免登录进入代码生成器,进入治理界面。

勾选表构造,点击生成,重启我的项目,相应的代码失效。

4、重启我的项目

拜访地址http://localhost:8080/doc.html 拜访接口列表。


(二)独立创立我的项目

独立创立我的项目反对从零构建代码生成器运行环境,既反对嵌入已存在的我的项目中,也反对新创建的我的项目。2.0 版本重点优化此局部内容。

1、增加依赖
<!-- 代码本地化生成依赖 -->
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-code-spring-boot-starter</artifactId>
    <version>1.5.6.1</version>
</dependency>

如果应用代码生成器性能,则代码本地化生成依赖为必选项。

2、配置数据库连贯

数据库连贯配置对应的数据库应蕴含带生成代码的库表构造。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ucode-cms
    username: root
    password: 123456
3、启动我的项目

启动我的项目后,拜访 http://localhost:8080 进入代码生成器控制台界面。

选中对应表,点击生成代码,在我的项目中便新添相应的代码。

再次重启我的项目,拜访 http://localhost:8080/doc.html 查看接口列表。

三、高级应用

在实现简略入门体验后,须要理解代码生成的高级局部,即全局配置。在我的项目中搜寻类名 CodeProperties 即可查看所有内置可供批改的参数,在全局 yml 文件中笼罩默认值即可实现批改,按需配置。

1、单表处理

当全局配置 ucode.code.joinQuery = false 或者应用默认配置时,则仅解决单表构造。将表名、字段名、字段类型、备注信息转化为 SSM 格调的源代码。

2、多表连贯

当在全局配置 ucode.code.joinQuery = true 时,则手动开启主外键查问,零碎会主动读取表的主外键关系,并将其转化为连贯查问的源代码。

3、主要参数
参数 默认值 应用备注
ucode.code.projectDir 用户自定义多模块我的项目须要指定我的项目名
ucode.code.removeTablePrefix false 依据须要是否在生成代码时移除表前缀
ucode.code.packageName xin.altitude.front 配置用户本人的包名
ucode.code.useLombok true 默认应用 Lombok
ucode.code.filterSysTable true 默认过滤不显示零碎表
ucode.code.joinQuery false 是否应用连贯查问(默认单表查问)
ucode.code.xml.addXml false 尽管说不倡议应用 XML 文件编写 SQL,但仍进步可开启开关
ucode.code.mapper.useCache true 默认开启二级缓存,自定义业务缓存可敞开

四、常见问题

1、找不到依赖?

找不到依赖很大可能是因为阿里云现象仓库尚未同步实现 Jar 包,在我的项目中 pom 文件增加如下配置:

<repository>
    <id>public</id>
    <name>maven nexus</name>
    <url>https://repo1.maven.org/maven2/</url>
    <snapshots>
        <updatePolicy>always</updatePolicy>
    </snapshots>
    <releases>
        <updatePolicy>always</updatePolicy>
    </releases>
</repository>
2、我的项目打包公布时如何解决代码生成器依赖?

我的项目打包公布时倡议手动移除代码生成器依赖,实际上代码生成器的生命周期存在于开发阶段。手动不移除对打包不会产生影响,但依然倡议在打包时移除代码生成器依赖。

<!-- 代码生成器模块(非必选)-->
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-code-spring-boot-starter</artifactId>
    <version>1.5.6.1</version>
</dependency>
3、多表连贯查问异样

对表连贯查问是一项简单的业务,目前反对:一个员工对应一个部门(一对一)、一个部门对应多个员工(一对多)、一名学生可选修多门课程每门课程可被多名学生选修(多对多)。
更高级别的套娃尚不反对。

4、生成后的代码能无缝迁徙到新我的项目吗?

能。生成的代码具备高度的迁徙属性,在新我的项目中导入缺省依赖即可。如果找不到相干依赖,请参考问题一。


如有疑难,可通过微信 dream4s 与作者分割。源码在 GitHub,视频解说在 B 站,本文珍藏在博客天地。


退出移动版