Scaffold-Boot-3.0框架使用文档Scaffold-Boot-3.0框架使用文档
首页
快速开始
变更记录
Source
首页
快速开始
变更记录
Source
  • 开始
  • 基础

    • 目录结构
    • 代码生成器
    • 增删改查
    • 异常处理
    • Knife4j(Swagger)文档
    • 登录&登出
    • 系统安全
    • 数据字典
    • Excel处理
    • 文件上传下载
    • 工具类
    • 定时任务
    • 微信集成
    • 短信服务
    • 参数配置
    • 接口限流
    • 日志审计
    • 数据脱敏
    • 网站管理
  • AI开发

    • AI项目工程结构
    • MCP服务
    • AI开发模式介绍
  • 开发规范
  • 常见问题
  • 深入

    • 配置详解-Config类
    • 配置详解-Yml配置文件
  • 生命周期

    • SonarQube代码质量保证
    • 部署到测试环境
    • 部署到正式环境
  • 优秀案例

    • Excel导入完整案例
  • 信创专区

    • 海量数据库
    • 神通数据库
    • 达梦数据库
    • 麒麟v10安装插件
  • 框架升级

目录结构

章节简介

本章节介绍项目目录接口,各种文件存放,编写规范等。

项目结构

以下以点线图形式展示项目结构,请在开发过程中遵守此结构,大家保持一致,便于后期维护。

项目目录/
│   ├── main/
│   │   ├── docker/
│   │   │   └── Dockerfile                              ->Dockerfile文件,一般无需修改
│   │   ├── java/
│   │   │   ├── com/
│   │   │       ├── fykj/
│   │   │           ├── scaffold/
│   │   │               ├── 业务模块A/                   ->业务模块文件夹,应该按照项目需求分业务模块,每个模块都有如下文件
│   │   │               │   ├── cons/                   ->常量类存放位置
│   │   │               │   ├── controller/             ->Controller类存放位置
│   │   │               │   │   ├── api/                ->api包存放的是对外开放的接口,无需认证也可访问
│   │   │               │   ├── domain/                 ->所有实体类、DTO、VO、Entity
│   │   │               │   │   ├── dto/                ->DTO类存放位置
│   │   │               │   │   ├── entity/             ->Entity类存放位置
│   │   │               │   │   ├── params/             ->参数类存放位置
│   │   │               │   │   ├── vo/                 ->VO类存放位置
│   │   │               │   ├── mapper/                 ->Mybatis Mapper接口存放位置
│   │   │               │   ├── service/                ->service接口存放位置
│   │   │               │   │   ├── impl/               ->service实现类存放位置
│   │   │               │   ├── task/                   ->定时任务相关类存放位置,不是必须
│   │   │               │   ├── util/                   ->工具类存放位置,不是必须
│   │   │               ├── config/                     ->配置类存放
│   │   │               ├── oss/                        ->本地OSS、Minio实现、以及未来扩展
│   │   │               ├── security/                   ->基于SaToken的登录、退出相关实现
│   │   │               ├── sms/                        ->短信服务,SmsFacade门面类
│   │   │               ├── system/                     ->系统核心业务相关,如用户、角色、权限等
│   │   │               ├── website/                    ->内置网站管理
│   │   │               └── ScaffoldApplication.java    ->主程序入口
│   │   ├── resources/
│   │       ├── data/                                   ->各种模板存放位置,可以新建docTemplate、pdfTemplate等文件夹,用于存放模板文件
│   │       │   ├── excelTemplate/                      ->Excel导出模板存放
│   │       ├── mapper/                                 ->Mybatis Mapper文件存放位置,可以新建文件夹分类管理
│   │       │   ├── database/                           ->代码生成器用的相关SQL
│   │       │   │   └── MySQLGeneratorMapper.xml
│   │       │   ├── system/                             ->系统管理相关Mapper
│   │       │   ├── website/                            ->网站管理相关Mapper
│   │       ├── template/                               ->代码生成器用的相关模板
│   │       ├── application-dev.yml                     ->开发环境配置文件
│   │       ├── application-prod.yml                    ->生产环境配置文件
│   │       ├── application-test.yml                    ->测试环境配置文件
│   │       ├── application.yml                         ->通用配置文件
│   │       ├── generation.properties                   ->代码生成器配置文件
│   │       ├── knife4j.yml                             ->knife4j配置文件
│   │       └── logback-boot.xml                        ->日志配置文件
├── build.gradle                                        ->gradle配置文件
├── setting.gradle                                      ->gradle配置文件

模块规约

在项目开发过程中,应该按照业务模块进行划分,模块应新建在项目/main/java/com/fykj/scaffold/{模块名}下。以业务模块英文命名,例如:survey/activity/mall代表 调查问卷、活动管理、商城等模块。
在每个模块中,都应该包含以下文件夹controller/domain/mapper/service,代码生成器生成时也会自动创建这些文件夹,并将相应的文件放入其中

实体类规约

提示

这些类主要用于封装数据格式,不应该包含任何业务逻辑,只保留getter和setter方法,以及构造方法
如果有需要,可以在DTO或者VO中增加内部类

核心区别

类型作用层与数据库关系典型用途
Entity数据持久化层直接映射数据库 CRUD 操作
DTO服务层/控制层无关服务层数据传输
VO服务层/控制层无关前端展示/API 响应
Params服务层/控制层无关接收查询参数
  1. VO:视图对象,主要用于封装前端页面展示需要的数据,此类应尽量做到前端需要什么,就返回什么,不要有任何多余字段。
  2. DTO:数据传输对象,主要用于封装前端传递给后端的数据或者是后端Service层质量传递的数据
  3. Entity:实体对象,主要用于数据库表ORM映射,包括Mybatis 的 @TableName、 @TableField注解,此类只能包含数据库表字段,不允许新建任何其他字段。如果需要返回给前端,尽量使用VO封装。
  4. Params:参数对象,主要用于封装前端传递给后端查询条件的参数

常量规约

  1. 常量类应该根据业务用途,新建在自身业务模块的cons目录下,如项目/main/java/com/fykj/scaffold/{模块名}/cons,常量命名规则为:{模块名}Cons.java。例如:SystemCons.java
  2. 在常量类中,应在类上加注@UtilityClass注解,防止开发人员初始化此类
  3. 在常量类内部,应该按照具体用途,细分内部类
/**
 * 系统常量类
 */
@UtilityClass
public class SystemCons {
    /**
     * 配置类型
     */
    public static class ConfigType {
        public static final String STRING = "String";
        public static final String INTEGER = "Integer";
        public static final String BOOLEAN = "Boolean";
        public static final String DECIMAL = "Decimal";
    }
    /**
     * 组织架构
     */
    public static class Org {
        public static final String CDO = "CDO";
    }
}

配置文件

后续如果需要新增配置文件,应该放在项目/main/resources下

在 GitLab 上编辑此页
最后更新: 2025/6/18 10:09
贡献者: xuew
Next
代码生成器