Administrator
Administrator
发布于 2025-01-03 / 30 阅读
0
0

Fast-Crud后端集成

要集成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

配置项

目前后端只有一个配置项。

key

说明

可选

默认值

fast-crud.upload-dir

图片列和文件列上传的目录,如果不配置,将会上传到: ${java临时目录}/upload

-

如果你希望本地长期存储,一定要配置一个本地可访问的目录绝对路径。如果无需要保留上传的图片或文件,或者自定义过上传逻辑(例如: 传到了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 是可选的,但依然强烈建议你使用它!


评论