【重磅开源】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
字段编码字段名称字段类型字段描述
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配置文件

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, 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;
}

实体类转换( 必须 )

这里的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          ---------- 应用程序的页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络-IS-IS基础配置实验

前面我们了解了IS-IS的一些基础理论&#xff0c;从建立邻接、链路状态数据库同步以及路由计算&#xff0c;现在开始学习下配置操作。 一、IS-IS配置 网络拓扑图&#xff1a; 拓扑图 IS-IS有Level级别的区分&#xff0c;Level-1可以是性能较低的设备只维护区域内的LSDB&#xff…

《R语言与农业数据统计分析及建模》学习——描述性统计分析

一、描述性统计概念和方法 1、概念和作用 描述性统计是对数据进行概括和描述&#xff0c;便于理解数据的特征、趋势和分布&#xff0c;帮助我们了解数据基本情况和总体特征&#xff0c;为后续更深入的数据分析和建模提供基础。 2、基础方法 &#xff08;1&#xff09;中心趋…

npm、yarn与pnpm详解

&#x1f525; npm、yarn与pnpm详解 &#x1f516; 一、npm &#x1f50d; 简介&#xff1a; npm是随Node.js一起安装的官方包管理工具&#xff0c;它为开发者搭建了一个庞大的资源库&#xff0c;允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 &#…

CountDownLatch源码分析

1.创建 CountDownLatch latch new CountDownLatch(5); 2.latch.countDown(); 将count执行减一操作&#xff0c;当count为0时&#xff0c;等待中的线程会被唤醒 SIGNAL (值为-1)&#xff1a; 表示后继节点需要被唤醒。当一个节点释放锁的时候&#xff0c;会唤醒它的后继节点…

openjudge_2.5基本算法之搜索_1998:寻找Nemo

题目 1998:寻找Nemo 总时间限制: 2000ms 内存限制: 65536kB 描述 Nemo 是个顽皮的小孩. 一天他一个人跑到深海里去玩. 可是他迷路了. 于是他向父亲 Marlin 发送了求救信号.通过查找地图 Marlin 发现那片海像一个有着墙和门的迷宫.所有的墙都是平行于 X 轴或 Y 轴的. 墙的厚度可…

2010-2023年“国家级大数据综合试验区”试点城市DID匹配数据

2010-2023年国家级大数据综合试验区试点城市DID匹配数据 1、时间&#xff1a;2010-2023年 2、来源&#xff1a;国家发展改革委、工业和信息化部、ZY网信办发函批复的试验区 3、指标&#xff1a;行政区划代码、年份、所属省份、地区、国家级大数据综合试验区、最早设立年份 …

ELK创建仪表盘

创建仪表盘步骤&#xff1a; 一、保存search二、生成饼图三、创建仪表盘 一、保存search 首先保存一段时间内的search&#xff0c;可以添加想要的字段&#xff0c;并保存这个search方便下次直接打开该search&#xff0c;并方便在可视化和仪表盘中使用该search. 二、生成饼图…

c++中的函数

一、函数概述 作用&#xff1a;将一段经常使用的代码封装起来&#xff0c;减少重复代码 一个较大的程序&#xff0c;一般分为若干个程序块&#xff0c;每个程序块实现特定功能。 二、函数的定义 函数定义主要有5个步骤&#xff1a; 返回值类型函数名参数列表函数体语句ret…

Laravel 6 - 第十二章 控制器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

QService 服务 指令引用的“0x00000000”内存。该内存不能为“read“

QtServiceBase类在Qt框架中是设计用来简化Windows服务或类Unix守护进程创建的。这个类提供了一组方法和属性&#xff0c;使得开发者能够专注于服务逻辑&#xff0c;而不必担心操作系统层面的细节。下面是一些QtServiceBase类中常用的属性和方法&#xff1a; 常用方法 start():…

【Linux】Linux权限管理详解

&#x1f331;博客主页&#xff1a;青竹雾色间 &#x1f331;系列专栏&#xff1a;Linux &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 1. Linux权限概念2. 文件访问者分类a) 文件和目录的访问者&#xff1a;b) 文件类型和访问权限 3. 文件权限值的表…

安装VCenter 7 对硬件资源的需求

安装VMware vCenter Server 7.x 对硬件资源的需求主要包括以下方面&#xff1a; 服务器硬件&#xff1a; 处理器&#xff1a;64位 x86架构&#xff0c;推荐采用多核CPU以支持高并发管理和运行多个虚拟机。具体数量取决于vCenter Server将管理的虚拟机规模及复杂度。内存&#x…

第四百七十七回

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容&#xff0c;本章回中将介绍GetMaterialApp组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…

K-近邻算法的 sklearn 实现

实验目的与要求 掌握基于 K-近邻分类算法的编程方法通过编程理解 K-近邻分类算法和该算法的基本步骤 实验器材 硬件&#xff1a;PC 机&#xff08;参与实验的学生每人一台&#xff09;软件环境&#xff1a;Python3.7 Pycharm 实验内容 使用 sklearn 库中的 neighbors 模块实…

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程 XGP这个游戏平台小伙伴们并不陌生吧&#xff0c;它是微软Xbox游戏部门推出的游戏租赁制会员服务&#xff0c;主要用于主机和PC两个平台。这个平台的会员就可以免费享受多款大制作游戏&#xff0c;而且每个月还会自动更新…

Java中的运算符

运算符是用于数学函数、一些特殊的赋值语句和逻辑比较方面的特殊符号。 赋值运算符&#xff08;“”&#xff09; 赋值运算符是一个二元运算符&#xff08;即对两个操作数进行处理&#xff09;&#xff0c;功能是将右侧的操作数赋值给左侧的操作数。 int a 100; 该表达式就…

李廉洋:4.24-4.25现货黄金,WTI原油区间震荡,走势分析。

黄金消息面分析&#xff1a;金银近日回调。随着伊朗方面淡化以色列最新反击&#xff0c;中东地区局势没有进一步发酵下&#xff0c;风险溢价下降金银出现较大幅度调整。由于近期高于预期的通胀数据&#xff0c;降息预期持续降温。昨日疲软的美国PMI以及以色列在加沙攻击的加剧支…

宽字符的来历:从ASCII到Unicode,C语言中的宽字符处理

目录 一、ASCII编码&#xff1a;字符世界的开篇 二、Unicode与宽字符的诞生 宽字符类型与宽字符串 三、C语言中的宽字符处理函数 四、宽字符与多字节字符 结语 在计算机科学的发展历程中&#xff0c;字符编码经历了从简单到复杂、从单一语言到全球多语种支持的演变过程。…

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

文章目录 一. GPT-1&#xff1a;无监督与微调1. 在GPT-1之前的监督学习的问题2. GPT-1中新的学习过程-无监督的预训练3. 复杂任务下的微调4. GPT-1为更强大的模型铺平了道路 二. GPT-2&#xff1a;context learning1. 核心思想&#xff1a;context learning2. GPT-2的数据集 三…

Simulink从0搭建模型03-Enabled Subsystem 使能子系统

参考博客 b站视频 【Simulink 0基础入门教程 P4 使能子系统 Enabled Subsystem 的使用介绍】 个人听了这个博主的视频风格觉得很适合我入门学习&#xff0c;讲得很清楚。 另外&#xff0c;视频里面教得很详细了&#xff0c;我也不会再详细写怎么打开创建等步骤&#xff0c;跟着…