【重磅开源】MapleBoot项目开发规范

基于SpringBoot+Vue3开发的轻量级快速开发脚手架

jdk-8 vue license

🍁项目简介

一个通用的前、后端项目模板

一个快速开发管理系统的项目

一个可以生成SpringBoot+Vue代码的项目

一个持续迭代的开源项目

一个程序员的心血合集

度过严寒,终有春日;挺过酷暑,必有丰收。

GitHub地址

Gitee地址

文档地址(更新中)

演示地址(储备中)

🎈前言

本项目大方向遵循阿里巴巴编码规范,其中有些设计可能因作者习惯原因,有些不一样,这里就不强制一致了。下面罗列一下项目常用到的一些设计规范。

🛢数据库设计规范

数据库暂以单表单库的规则设计,如后期肯定会有分库分表,可在设计前期根据自己需求调整。

表设计

表命名一般由 模块前缀简写'_' + 功能名

例如

  • 系统管理-字典类型 : sys_dict_type
  • 博客中心-文章标题:blog_title
  • 小程序-用户管理:applet_user

一个表中一般需要包含基础字段和部分需要的通用字段,基础字段和通用字段定义规则如下,代码生成工具中有部分直接根据基础字段的编码处理了,如需改动,可对应修改生成工具源码。

基础字段

字段编码 字段名称 字段类型 字段描述
id 主键ID BIGINT(20) 默认自动递增(AUTO_INCREMENT)
create_id 创建人id BIGINT(20) 新增时自动填充
create_time 创建时间 DATETIME 新增时自动填充
update_id 修改人id BIGINT(20) 新增、修改时自动填充
update_time 更新时间 DATETIME 新增、修改时自动填充

常用字段

字段编码 字段名称 字段类型 字段描述
status 状态 TINYINT(1) Java实体中,转为boolean,0:无效;1:生效
remark 备注 VARCHAR(500) 前端以文本域的形式展示填写
sort_num 排序 BIGINT(20) 展示以从小到大正序排序
is_delete 是否删除 TINYINT(1) 默认当作逻辑删除字段,使用Mybatis Plus的@TableLogic注解
version 数据版本号 BIGINT(20) 默认当作乐观锁字段,使用Mybatis Plus的@Version注解

树表字段

生成代码时,修改、编辑不要选择此字段,已默认处理

#if($table.tree)
      parentId: '',
      ancestors: '',
      ancestorsArray: [],
#end
字段编码 字段名称 字段类型 字段描述
parent_id 父节点ID BIGINT(20) 父节点ID,顶级节点,此字段设为0
ancestors 祖级列表 VARCHAR(255) 祖级列表,方便页面回显,数据格式如[100,101,201]

🚀后端设计规范

模块定义

可根据实际业务拆分模块,建议同一个功能模块拆分成一个,例如用户中心模块、博客管理模块、代码生成模块等。

其中比较特殊的有一下两个模块

  • 通用工具类模块:maple-admin-common
  • Rest统一接口模块:maple-admin-rest

其中maple-admin-rest为统一接口提供模块,只做差异化接口提供,尽量不做业务处理,然后统一调用功能模块的Service接口。

接口模块定义

这里以系统模块为例

maple-admin-system             ------------ 模块名称
├─src
│  └─main
│      ├─java
│      │  └─com.maple.system   ------------ 模块目录
│      │     ├─bean            ------------ 实体类
│      │     ├─mapper          ------------ mapper类
│      │     ├─service         ------------ service接口类
│      │     │  └─impl         ------------ service接口实现类
│      │     └─vo
│      │        ├─model        ------------ 对外实体Model类
│      │        └─query        ------------ 请求参数对象
│      └─resources
│          └─mapper            ------------ mapper的xml文件
└─pom.xml                      ------------ maven配置文件

Rest接口模块定义

maple-admin-rest                   ----------- 模块名称
├─src
│  └─main
│      ├─java
│      │  └─com.maple.rest         ----------- 模块目录
│      │     ├─aop                 ----------- AOP切面配置
│      │     ├─config              ----------- 启动项配置
│      │     ├─controller          ----------- Controller接口
│      │     │  ├─common           ----------- 通用接口
│      │     │  └─manage           ----------- 管理模块接口
│      │     │     ├─system        ----------- 管理模块-系统设置接口
│      │     │     ├─tool          ----------- 管理模块-工具类接口
│      │     │     └─usc           ----------- 管理模块-系统用户接口
│      │     ├─job                 ----------- 定时任务
│      │     └─Application.java    ----------- 项目启动类
│      └─resources                 ----------- 资源目录
│          └─WEB-INF
│              └─resources
└─pom.xml                          ----------- Maven配置文件

对象字段定义

字段定义和数据库字段对应关系如下

数据库字段 Java对象字段
tinyint(1) Boolean
int, tinyint, smallint, mediumint Integer
char, varchar, nvarchar, varchar2, tinytext, text, mediumtext, longtext String
datetime, time, date, timestamp Date
bigint Long
float Float
double Double
decimal BigDecimal
其它类型 暂未定义

生成代码时可以配置是否集成基础字段对象com.maple.common.config.bean.BaseEntity

其中BaseEntity对象包含上述数据库设计中的基础字段

@Data
public class BaseEntity implements Serializable {

    @TableId(type = IdType.AUTO)
    protected Long id;

    @ApiModelProperty("创建人id")
    @TableField(value = "create_id", fill = FieldFill.INSERT)
    private Long createId;

    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @ApiModelProperty("更新人id")
    @TableField(value = "update_id", fill = FieldFill.INSERT_UPDATE)
    private Long updateId;

    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

实体类转换( 必须 )

这里的bean为数据库一一对应的对象,默认规则设计上不做任何侵入,只在接口模块内部使用。

对外部接口提供数据时,统一转换为Model对象。

转换工具类:com.maple.common.util.TransformUtils

使用方式:

    /**
     * 单个对象之间转换
     */
    public static <T> T map(Object source, Class<T> destinationClass) {
        if (source == null) {
            return null;
        }
        return MAPPER.map(source, destinationClass);
    }

    /**
     * 集合对象之间转换
     */
    public static <T> List<T> mapList(Collection<?> sourceList, Class<T> destinationClass) {
        List<T> destinationList = new ArrayList<>();
        for (Object sourceObject : sourceList) {
            destinationList.add(MAPPER.map(sourceObject, destinationClass));
        }
        return destinationList;
    }


	// 使用方式
	UserModel model = TransformUtils.map(user, UserModel.class);
	List<UserModel> modelList = TransformUtils.mapList(user, UserModel.class);

🛸前端设计规范

前端就不多说了,本身也是用了现有的框架,详细见框架本身源码

管理端框架:vueNextAdmin

maple-web

maple-web
├─public             ---------- 公开文件
└─src                           
    ├─api            ---------- 接口地址
    │  └─system      ---------- 系统管理接口
    ├─assets         ---------- 应用程序使用的静态资源文件
    ├─components     ---------- 应用程序的公共组件
    ├─directive      ---------- Vue的自定义指令
    ├─i18n           ---------- 放置国际化多语言配置文件
    ├─layout         ---------- 项目的布局.vue模板
    ├─router         ---------- 应用程序的路由配置
    ├─stores         ---------- 应用程序的状态管理工具
    ├─theme          ---------- 应用程序的主题配置
    ├─types          ---------- 数据类型
    ├─utils          ---------- 自己封装的一些全局性的js功能文件
    └─views          ---------- 应用程序的页面

相关推荐

  1. 项目开发流程规范,请查收!

    2024-04-25 07:24:04       30 阅读
  2. vue 开发规范

    2024-04-25 07:24:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 07:24:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 07:24:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 07:24:04       82 阅读
  4. Python语言-面向对象

    2024-04-25 07:24:04       91 阅读

热门阅读

  1. Mac 上可以使用 ping 端口

    2024-04-25 07:24:04       42 阅读
  2. pnpm的安装与配置(Windows/macOS)

    2024-04-25 07:24:04       33 阅读
  3. Swift加载Lottie

    2024-04-25 07:24:04       37 阅读
  4. 基于Promise + XHR 封装myAxios函数

    2024-04-25 07:24:04       38 阅读
  5. Flutter 项目添加 IOS 小组件开发记录

    2024-04-25 07:24:04       36 阅读
  6. linux命令之printf

    2024-04-25 07:24:04       35 阅读
  7. TCP详解

    TCP详解

    2024-04-25 07:24:04      31 阅读
  8. 【Altium Designer-画板指南】

    2024-04-25 07:24:04       31 阅读
  9. 骑砍2霸主MOD开发(8)-action_sets.xml骨骼动画

    2024-04-25 07:24:04       35 阅读