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

devtools/2024/11/13 5:31:34/

基于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.ppmy.cn/devtools/14369.html

相关文章

背包问题汇总

本文涉及知识点 动态规划汇总 状态机dp 01背包 有n件物品&#xff0c;体积分别是v[i]&#xff0c;价值分别是w[i]&#xff0c;有个包的容积是bv。如何选择物品使得&#xff0c;在总体积不超过vb的前提下&#xff0c;让总价值最大。 动态规划的状态表示 dp[i][j] 表示处理完…

安全狗云眼的主要功能有哪些?

"安全狗云眼"是一款综合性的网络安全产品&#xff0c;主要用于实时监控和保护企业的网络安全。其核心功能包括威胁检测、漏洞扫描、日志管理和合规性检查等。 以下是安全狗云眼的主要功能详细介绍&#xff1a; 1、资产管理 定期获取并记录主机上的Web站点、Web容器、…

spring security登录认证授权

spring security登录认证授权 是什么 Spring Security 主要实现了Authentication&#xff08;认证&#xff0c;解决who are you? &#xff09; 和 Access Control&#xff08;访问控制&#xff0c;也就是what are you allowed to do&#xff1f;&#xff0c;也称为Authorizat…

Linux :vim ,gcc ,makefile 三件套之vim的基本使用

vim &#xff0c;gcc &#xff0c;makefile 三件套 一&#xff0c;vim ​ vim 是 Linux 系统上的最著名的文本/代码编辑器&#xff0c;也是早年的 Vi 编辑器的加强版&#xff0c;而 gVim 则是其 Windows 版。它的最大特色是完全使用键盘命令进行编辑&#xff0c;脱离了鼠标操…

探索Web3:去中心化的互联网新时代

引言 在过去的几十年里&#xff0c;互联网已经改变了我们的生活方式、商业模式以及社交互动方式。然而&#xff0c;一个新的技术浪潮——Web3正在崭露头角&#xff0c;预示着一个去中心化的互联网新时代的来临。本文将深入探讨Web3技术的定义、特点以及其对未来互联网发展的影…

Java面试之JDK、JRE、JVM区别

1、JDK&#xff08;Java Development Kit&#xff09;&#xff1a; JDK是Java开发工具包&#xff0c;它是开发Java应用程序的核心工具。它包含了编译器&#xff08;javac&#xff09;、运行时库&#xff08;Java标准库&#xff09;、调试器&#xff08;jdb&#xff09;等工具&…

eCharts 折线图 一段是实线,一段是虚线的实现效果

在lineStyle里写了不生效的话&#xff0c;可以尝试数据拼接 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224,218 ,,,],type: line},{data: [,,, 218, 135, 147, 260],type: line,lineStyl…

Linux 底软开发——对CAN的详细操作(周期发送,异常检测,过滤报文)

Linux底软开发—对CAN发送接收详细操作 文章目录 Linux底软开发—对CAN发送接收详细操作1.保证多条CAN数据发送的周期性2.解析CAN报文数据3.CAN总线异常机制应对4.对CAN报文进行过滤操作5.完整的接收报文代码&#xff08;过滤&#xff0c;心跳检测&#xff0c;解析&#xff09;…