一、模块简介
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 站,本文珍藏在博客天地。