【重磅开源】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://xiahunao.cn/news/2982040.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

防火墙详细讲解

目录 介绍 防火墙的特征 防火墙的组成 介绍 防火墙&#xff08;firewall&#xff09;是指一种计算机硬件和软件的结合&#xff0c;将内部网和公众访问网&#xff08;如Internet&#xff09;分开的方法&#xff0c;它实际上是一种隔离技术。防火墙主要由服务访问规则、验证工…

如何在官网查看Qt5的所有模块?

2024年4月23日&#xff0c;周二上午 如果你不想一步步来的话&#xff0c;可以直接去这个Qt官方链接 https://doc.qt.io/qt-5/qtmodules.html 第一步&#xff1a;去到Qt官网 https://www.qt.io/ 第二步&#xff1a;点击文档链接 第三步&#xff1a;选择文档中的“Qt5” 第四步…

虚拟化及Docker基础

一、虚拟化 1.1 云端 1.2 云计算服务模式分层 1.3 虚拟化架构 1.3.1 寄居架构 1.3.2 原生架构 1.4 虚拟化产品 1.4.1 仿真虚拟化产品&#xff08;对系统硬件没有要求&#xff0c;性能最低&#xff09; 1.4.2 半虚拟化 &#xff08;虚拟机可以使用真机物理机&#xff09…

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

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

第67天:APP攻防-Frida反证书抓包移动安全系统资产提取评估扫描

思维导图 案例一&#xff1a;内在-资产提取-AppinfoScanne AppinfoScanner 一款适用于以 HW 行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具&#xff0c;可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态 WEB …

word页脚的页码全都一样

1. 问题描述&#xff1a; 我的Word不想从首页开始有页码&#xff0c;想从第2页开始有连续页码&#xff0c;但是我的第1~3页码都是正确的&#xff0c;从第4页及之后页码就全为相同的“4”了。 很奇怪&#xff0c;以前每次都是试出来的&#xff0c;没有真的搞懂怎么操作。 如下…

idea插件快速搜索接口位置之RestfulTool平替Apipost-Helper-2.​0

需求 经常需要根据请求路径搜索某接口位置&#xff0c;特点是接口没有斜杠\&#xff0c;所以双击Shrift找不到接口 RestfulTool 和 RestfulToolkit-fix平替 这两个插件在idea2023.3中无法使用&#xff0c;使用的是Apipost-Helper-2.​0来代替&#xff0c;他也有自己的快捷键…

基于java+springboot+vue实现的小区物业管理系统(文末源码+Lw+ppt)23-34

摘 要 随着互联网时代的发展&#xff0c;传统的线下管理技术已无法高效、便捷的管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;在人们生活环境要求不断提高的前提下&#xff0c;小区物业管理系统建设也逐渐进入了…

第七章 异常处理

第七章 异常处理 Bug的由来及分类 Bug&#xff1a;它指的是检测并排除计算机程序/机器中的故障。 粗心导致的语法错误&#xff1a; 1、漏了末尾的冒号&#xff0c;如if语句、循环语句、else子句等 2、缩进错误&#xff0c;该缩进的没有缩进&#xff0c;不该缩进的乱缩进 3、…

kubeadmin搭建自建k8s集群

一、安装要求 在开始之前&#xff0c;部署Kubernetes集群的虚拟机需要满足以下几个条件&#xff1a; 操作系统 CentOS7.x-86_x64硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多【注意master需要两核】可以访问外网&#xff0c;需要…

【学习笔记二十五】EWM PPF自动WT后台配置和前台展示

一、概述 SAP EWM(Extended Warehouse Management)模块中的PPF(Post Processing Framework)是一个用于执行通用功能和流程的工具。PPF为SAP EWM提供了一个统一的接口,用于触发各种动作,例如打印托盘标签、交货单、拣选票或发送消息和传真。这些动作在特定条件满足时生成,…

解码数据世界:统计学入门与应用指南

引言 统计学可以被定义为研究数据的科学&#xff0c;它涉及到数据的收集、分析、解释和呈现。其目标是从数据中提取有意义的信息&#xff0c;并使用这些信息来做出推断与决策。 统计学主要分别以下几个主要领域&#xff1a; 描述性统计&#xff1a;使用图表、图形和其他工具…

网络工程师---第十四天

知识产权保护期限&#xff1a; 知识产权归属&#xff1a; 网络冗余技术&#xff1a; 堆叠优缺点&#xff1a; 认证技术总结&#xff1a; 网络设备部署与功能总结&#xff1a; 优先级总结&#xff1a;

重学java 22.面向对象 继承、抽象综合案例

我们纵横交错&#xff0c;最后回到原点 —— 24.4.23 综合案例 流程思维图 代码实现 方式1 利用set方法为属性赋值 父类&#xff1a; public abstract class Development extends Employee{}子类1&#xff1a; public class JavaEE extends Development{Overridepublic void w…

mPEG-Poly(lactide),Methoxy-PEG-PLA是由单甲氧基聚乙二醇(mPEG)和聚乳酸(PLA)通过酯键连接而成的嵌段共聚物

【试剂详情】 英文名称 mPEG-PLA&#xff0c;Methoxy-PEG-Poly(lactide)&#xff0c; mPEG-Poly(lactide)&#xff0c;Methoxy-PEG-PLA 中文名称 聚乙二醇单甲醚聚乳酸两嵌段共聚物 外观性状 由分子量决定&#xff0c;固体或者粘稠液体。 分子量 0.4k&#xff0c;0.6k&a…

react实现时钟翻牌效果

需求&#xff1a;随着数字的变动要求有时钟翻动动效 问题&#xff1a;只在加载时有动效 解决方案&#xff1a;通过判断数字改变&#xff08;这里通过新旧数值变动来判断&#xff0c;不贴代码啦&#xff09;&#xff0c;每次变动的时候手动把animationIterationCount设置为inf…

SCADA系统通过巨控GRM模块实现OPC协议远程监控PLC

SCADA系统和PLC不在同一个地方&#xff0c;需要远程监控和控制PLC&#xff0c;可以通过巨控GRM模块来实现&#xff0c;通过OPC协议转巨控服务器远程读写PLC寄存器&#xff0c;从而完成远程监控PLC。 要实现SCAKDA系统远程监控PLC&#xff0c;关键是要实现SKADA能通过互联网访问…

autodl私有云使用方法(管理员端)

&#xff08;ICL智能计算实验室自用&#xff09;https://private.autodl.com/私有云的网址&#xff0c;注册&#xff0c;获得个人的ID&#xff0c;是否实名根据个人情况选择。 选择这个&#xff0c; 所有主机部分查看私有的服务器所有的机器。方便管理。 团队管理点击红色圈出…

阿里云全球基础设施展示,公共云地域、边缘节点、超级数据中心分布图

阿里云基础设施覆盖全球四大洲&#xff0c;从中心地域、本地地域到边缘计算节点等进行了多形态基础设施部署&#xff0c;更好的满足多样化的业务和场景需求&#xff0c;为广大用户享受云计算的优质体验提供坚实基础。本文为大家展示2024年截至目前阿里云的全球基础设施&#xf…

第九讲 - Java面向对象

第九讲 - Java面向对象 文章目录 第九讲 - Java面向对象1. 类和对象1.1 类和对象的理解1.2 类的定义1.3 对象的使用1.4 学生对象-练习 2. 对象内存图2.1 单个对象内存图2.2 多个对象内存图 3. 成员变量和局部变量3.1 成员变量和局部变量的区别 4. 封装4.1 封装思想4.2 private关…