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


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

    jdk-8 vue license

    🍁项目简介

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

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

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

    一个持续迭代的开源项目

    一个程序员的心血合集

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

    GitHub地址

    Gitee地址

    文档地址(更新中)

    演示地址(储备中)

    🎈前言

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

    🛢数据库设计规范

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

    表设计

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

    例如

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

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

    基础字段

    字段编码字段名称字段类型字段描述
    id主键IDBIGINT(20)默认自动递增(AUTO_INCREMENT)
    create_id创建人idBIGINT(20)新增时自动填充
    create_time创建时间DATETIME新增时自动填充
    update_id修改人idBIGINT(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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    字段编码字段名称字段类型字段描述
    parent_id父节点IDBIGINT(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配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    对象字段定义

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

    数据库字段Java对象字段
    tinyint(1)Boolean
    int, tinyint, smallint, mediumintInteger
    char, varchar, nvarchar, varchar2, tinytext, text, mediumtext, longtextString
    datetime, time, date, timestampDate
    bigintLong
    floatFloat
    doubleDouble
    decimalBigDecimal
    其它类型暂未定义

    生成代码时可以配置是否集成基础字段对象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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    实体类转换( 必须 )

    这里的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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    🛸前端设计规范

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

    管理端框架:vueNextAdmin

    maple-web

    maple-web
    ├─public             ---------- 公开文件
    └─src                           
        ├─api            ---------- 接口地址
        │  └─system      ---------- 系统管理接口
        ├─assets         ---------- 应用程序使用的静态资源文件
        ├─components     ---------- 应用程序的公共组件
        ├─directive      ---------- Vue的自定义指令
        ├─i18n           ---------- 放置国际化多语言配置文件
        ├─layout         ---------- 项目的布局.vue模板
        ├─router         ---------- 应用程序的路由配置
        ├─stores         ---------- 应用程序的状态管理工具
        ├─theme          ---------- 应用程序的主题配置
        ├─types          ---------- 数据类型
        ├─utils          ---------- 自己封装的一些全局性的js功能文件
        └─views          ---------- 应用程序的页面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    Linux内存管理 | 二、虚拟地址空间布局
    数据可视化大屏设计
    基于开源模型搭建实时人脸识别系统(五):人脸跟踪
    springboot基于WEB的高校文档打印系统毕业设计源码101004
    【python海洋专题二十一】subplots共用一个colorbar
    win10中打开jupyter notebook并进入指定文件夹
    程序员的职业发展出路有哪些?
    一套极简的MQTT使用接口EasyMqttClient
    代码随想录算法训练营Day49|贪心算法8
    BIM+GIS场景还原项目总结
  • 原文地址:https://blog.csdn.net/qq_34988304/article/details/138157595