要集成Fast-Crud后端非常简单,事实上,它已经是一个标准的Spring-Boot-Starter,只需要添加maven坐标就可以了。
集成fast-crud-spring-boot-starter
添加maven坐标
添加如下maven坐标
<dependency>
<groupId>io.github.pengxianggui</groupId>
<artifactId>fast-crud-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
具体版本参考release
配置项
目前后端只有一个配置项。
如果你希望本地长期存储,一定要配置一个本地可访问的目录绝对路径。如果无需要保留上传的图片或文件,或者自定义过上传逻辑(例如: 传到了oss), 则可无需配置。
集成fast-crud-auto-generator(可选的)
fast-crud-auto-generator
基于 mybatis-plus-generator
,如果你了解后者你就知道后者只是一个提供你在项目本地跑的java程序,用来生成对应实体的controller、service、serviceImpl、mapper以及entity。
所以 fast-crud-auto-generator
作用也完全一样,只是对后者简单的封装,方便运行时交互式选择要生成内容,以及保证生成的代码文件的正确性(符合fast-crud规范)。
添加maven坐标
<dependency>
<groupId>io.github.pengxianggui</groupId>
<artifactId>fast-crud-auto-generator</artifactId>
<version>${version}</version>
</dependency>
具体版本参考release, 这个一般不会迭代
手撸一个main方法
在开始运行之前,你需要写一个main方法!
fast-crud-auto-generator
里没有提供写好的main方法,主要是因为这个main方法太过简单,而且要指定数据库连接等一些配置,如果通过main的args传入,想到每次都要你输入也比较麻烦。
你可以直接拷贝下面这个代码自用
package io.github.pengxianggui.crud.demo;
import io.github.pengxianggui.crud.autogenerate.CodeAutoGenerator;
public class CodeGenerator {
public static void main(String[] args) {
CodeAutoGenerator.builder()
.author("pengxg") // 改成实际的作者名
.module("demo") // maven多模块时配置模块名,表明要生成的代码文件存放的maven模块
.url("jdbc:mysql://127.0.0.1:3306/fast-crud") // 替换成你的数据库连接地址
.username("root") // 替换成你的数据库用户名
.password("123456") // 替换成你的数据库密码
.parentPkg("io.github.pengxianggui.crud.demo") // 替换成你的包根目录
.build()
.generate();
}
}
记得改上面部分配置
本地运行main方法
比如你现在有一个student表,你要生成controller、service、serviceImpl、mapper、mapppr.xml和entity,那么运行这个main方法!
前提是你上面的配置都正确设置了,且对应数据库里有student表!
运行前
运行后
观察StudentController类
除了上面图中说明,还值得补充的是:
@Api注解来自swagger,Fast-Crud默认你有swagger,如果你没有,移除它即可。
@Crud和@CrudService是必须的
查看swagger接口文档页面,会发现相关接口已经就绪:
注意:
其中
导出
接口1.0.0版本暂未实现,会在后续版本实现。你可能注意到,标准接口中类型几乎都是
POST
(即使是查询方法),这是必要的,为了查询的灵活性。
排除部分接口
动态注册默认会注册所有标准接口,如果有一些你不希望注册,比如不要导出
,你可以通过修改@Crud
注解实现:
@CrudExclude(value = {CrudMethod.EXPORT})
如此,导出
接口就不会生成了,接口文档里也就没有了。但是注意:已实现的标准接口都应用于前端标准组件,如果排除某些接口,会导致前端标准组件对应部分无法正常工作!
观察StudentServiceImpl
init方法是Fast-Crud内置的,必须保留。
StudentServiceImpl会从mybatis-plus那里继承丰富的API, 此外还会从Fast-Crud继承几个方法(图中红框框选的),你主要通过重写这几个方法实现标准功能的逻辑自定义。
其它几个生成的文件没有特别之处。
延伸
关于@CrudExclude实现的Rest接口动态注销
,你可以参考源码的 RequestMappingAutoRemover
类。
总结
后端集成fast-crud比较简单,基本引入pom坐标即可。虽然fast-crud-auto-generator
是可选的,但依然强烈建议你使用它!