> 本文标题为宣传噱头,前提为已启动项目,数据库连接正常,未计算其他时间,请勿计较 ## 使用后端代码生成器-共两步(以下主要演示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/>