> 本文标题为宣传噱头,前提为已启动项目,数据库连接正常,未计算其他时间,请勿计较
## 使用后端代码生成器-共两步(以下主要演示JPA代码生成)
> 使用代码生成器可不运行项目(自动生成表需要启动项目),这里为启动项目后生成代码的演示
### 第一步:输入实体类名生成代码
- 在 `cn.exrick.xboot.generator.XbootGenerator` 中输入你的实体类名后运行主函数即可,当然可修改其他配置信息【若文件已存在,不会覆盖生成】
<img src="https://ooo.0o0.ooo/2020/02/26/L5fdSJVK8pNjwYD.png" width="500px"/>
- 运行后控制台提示成功,即可在配置的包路径下看到生成的代码文件【若文件不存在自动创建包文件夹及代码文件,若文件已存在不会覆盖原文件】
<img src="https://ooo.0o0.ooo/2020/02/26/D4HE6ys93zIvRWx.png" />
- 若生成错误可在主函数中启用删除方法,重新运行主函数即可删除刚生成的代码
<img src="https://ooo.0o0.ooo/2020/02/26/iXsNFC981OAlGxQ.png" width="800px"/>
- 此处文档的演示已运行项目且已使用JRebel热更新工具,生成代码后稍等片刻或手动编译触发热更新,查看相关日志,可以在数据库中看到Hibernate映射DDL已帮我们建好的表,已包含`XBootBaseEntity`通用字段【表名根据实体类名驼峰法转换,前缀`t_`可配置】
<img src="https://ooo.0o0.ooo/2020/02/26/QuvOfgAxp6t5j9T.png" width="600px"/>
### 第二步:输入字段
- 找到刚生成的实体类,根据业务需求输入需要的字段,`@ApiModelProperty`为swagger接口文档注释,还可以使用`@Column`注解做字段标注(详见下方说明),若不想入库的字段可以加上`@Transient`注解(详见下节CRUD文档)
<img src="https://ooo.0o0.ooo/2020/02/26/i2hqEMYs69pjNcm.png" width="500px"/>
- 稍等片刻热更新后,我们可以看到数据库中字段变化【具体表设计请根据实际需求优化修改,建议参考[数据库设计规范章节文档](https://www.kancloud.cn/exrick/xboot/1022511)】
<img src="https://ooo.0o0.ooo/2020/02/26/DEvCpuPLG9TywHc.png" width="800px"/>
- 到此一个实体类的基本增删改接口就已经完成了,打开在线接口文档即可进行测试 http://localhost:8888/doc.html
![QQ截图20180826180920.png](https://ooo.0o0.ooo/2020/02/26/G1in5eZjbkEUWLT.png)
### 条件构造代码生成
- 输入实体类字段后再次运行`XbootGenerator`的主函数【文件存在不会覆盖】,即可在控制台看到生成的条件构造分页获取代码,根据需要自行复制覆盖以下代码至实现方法ServiceImpl中
- String类型默认使用Like,`like %*%`
- 其余类型默认使用Equal,`==`
<img src=https://ooo.0o0.ooo/2020/02/26/8gowLhfT14CVqzc.png width=800/>
### 树形结构相关代码生成
- 常量`isTree`字段设为true后将自动生成树形结构相关所需添加接口以及默认属性字段,且含缓存设计
``` java
/**
* 是否生成树形结构相关接口
* 建议仅需修改
*/
private static final Boolean isTree = false;
```
- 树形结构可生成接口预览
![](https://ooo.0o0.ooo/2020/02/26/cl3PA1hMumxvHEs.png)
### JPA工作流相关代码生成[【完整版】](http://xpay.exrick.cn/pay?xboot)
- 常量`activiti`字段设为true后将自动生成工作流相关所需添加接口以及字段
``` java
/**
* 是否生成关联工作流相关接口
* 建议仅需修改
*/
private static final Boolean activiti = false;
```
### @Column注解补充说明
~~~
unique属性表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。
nullable属性表示该字段是否可以为null值,默认为true。
insertable属性表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。
updatable属性表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。
columnDefinition属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。
table属性表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。有关多个表的映射将在本章的5.6小节中详细讲述。
length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。
precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
~~~
## 新增Mybatis-Plus后端代码生成器
- 找到 `cn.exrick.xboot.generator.XbootMPGenerator`工具类,使用步骤同上,可自动生成相应`mapper.xml`空白文件至`resources/mapper`中
<img src="https://ooo.0o0.ooo/2019/04/11/5caf233d0ad6b.png" width="600px"/>
- Mybatis-Plus生成器可生成接口预览
<img src="https://ooo.0o0.ooo/2019/04/11/5caf5c87bd0c1.png" />
- 注意若修改dao对应包路径出错后,需到`MybatisPlusConfig`配置添加你的mapper路径扫描
``` java
/**
* dao对应包 【注意修改后需到cn.exrick.xboot.config.mybatisplus.MybatisPlusConfig配置你的mapper路径扫描】
* (文件自动生成至该包下)
*/
private static final String daoPackage = "cn.exrick.xboot.modules.your.mapper";
```
### 已支持树形结构相关代码生成
- 常量`isTree`字段设为true后将自动生成树形结构相关所需添加接口以及默认属性字段,且含缓存设计
``` java
/**
* 是否生成树形结构相关接口
* 建议仅需修改
*/
private static final Boolean isTree = false;
```
### 条件构造代码生成
- 输入实体类字段后再次运行`XbootMPGenerator`的主函数【文件存在不会覆盖】,即可在控制台看到生成的条件构造分页获取代码,根据需要自行复制添加以下代码至控制层方法Controller中
- String类型默认使用Like,`like %*%`
- 其余类型默认使用Equal,`==`
<img src=https://ooo.0o0.ooo/2020/02/26/StIfUdFyvEcDCa6.png width=800/>
- 前言&版本说明
- 概念
- XBoot 是什么?
- 系统架构
- 主要使用的开源组件
- 角色控制访问权限(RBAC)
- 用户手册
- 系统配置
- 工作流使用配置
- 定时任务调度
- 智能助手客服机器人
- 项目本地运行
- 后端运行
- 前端运行
- 项目结构说明
- 附:使用Oracle等数据库
- 模块化版本
- 后端开发指南
- 基本开发指南
- 前后端数据交互标准
- 工具类及数据权限
- 代码生成器-30秒搞定CRUD
- 增删改查CRUD
- 日志类型注解扩展
- 逻辑删除
- 各验证码使用及配置
- 接口文档使用及认证
- 前端开发指南
- 基本开发指南
- 主题/Logo/首页等配置
- 路由菜单配置
- 多语言国际化配置
- 自定义图标icon
- 工具类及数据获取
- 其他说明
- 完整版开发指南
- 前端Vue代码生成器
- Activiti工作流
- 单点登录配置
- 智能助手/客服机器人
- MinIO对象存储服务搭建
- 第三方社交账号配置
- 短信开发/站内消息/邮件
- Vaptcha验证码
- 禁用词使用
- 前端移除CDN
- 其他说明
- 开放平台及单点登录
- 开放平台使用指南
- Web接入开发流程
- 单点登录开发指南
- 微信小程序端开发指南
- 项目导入与开发必读
- 业务组件
- 产品组件(小)
- 产品组件(大)
- 优惠券组件
- 评论列表组件
- 红包组件
- 推荐商品组件
- 页面设计
- 商品详情页及SKU设计
- 通用方法工具类说明
- 开发经验与踩坑分享
- Uniapp端开发指南
- APP后端开发指南
- Uniapp前端开发指南
- 开发新功能示例
- 后端开发新模块
- 前端开发新页面
- 测试
- SonarQube代码质量管理
- TestNG单元测试
- ExtentReports测试报告
- Selenuim自动化Web测试
- Appuim自动化App测试
- JMeter压测性能测试
- 部署
- Spring Boot配置
- 快速部署
- 后端部署
- 前端部署
- 前端部署优化
- Docker容器化部署
- 服务器配置
- 持续集成
- GitLab
- GitLab CI
- XBoot 脚本参考
- Jenkins
- Jenkins安装
- XBoot CI参考
- DevOps环境搭建
- 组件安装列表
- 开发设计规范
- 分支管理
- 数据库设计规范
- Redis使用规范
- Java基础开发规范
- Rest API规范
- 项目结构规范
- 前端开发规范
- 前端设计规范
- 项目搭建分享
- 后端相关
- SpringBoot 2.x区别总结
- Spring Security整合JWT
- Spring Security动态权限管理
- Spring Boot 2.x整合Quartz
- Spring Boot 2.x整合Websocket
- Spring Boot 2.x整合Activiti工作流以及模型设计器
- Spring Boot + Security全局跨域配置
- 前端相关
- axios请求封装 统一异常处理
- 动态路由菜单加载
- 多维度控制权限至按钮显示
- 发送消息图标红点实时显示
- 动态组件单页操作
- XBoot助你【告别996】
- 业务开发踩坑
- 你会用开发神器IDEA吗
- Lombok你知道多少
- 你还在手动校验参数吗
- 你真的会用JPA吗
- Lamda表达式
- Stream流式API
- 告别资源关闭
- Optional避免null
- 谷歌Guava工具包
- 线程池
- 其他小经验技巧
- 更新日志及步骤
- 常见问题