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

news2025/1/13 9:23:19

基于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.coloradmin.cn/o/1635449.html

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

相关文章

WEB攻防-PHP特性-piwigoCMS审计实例

前置知识&#xff1a;PHP函数缺陷 测试环境 &#xff1a;piwigo CMS 漏洞URL&#xff1a; 漏洞文件位置&#xff1a;\include \functions_rate.inc.php 漏洞产生入口文件&#xff1a;/picture.php picture.php中接受了一个GET方法action参数&#xff0c;作为switch...case.…

spark实验求TOP值

实验1&#xff1a;求TOP值 已知存在两个文本文件&#xff0c;file1.txt和file2.txt&#xff0c;内容分别如下&#xff1a; file1.txt 1,1768,50,155 2,1218, 600,211 3,2239,788,242 4,3101,28,599 5,4899,290,129 6,3110,54,1201 7,4436,259,877 8,2369,7890,27 fil…

太速科技-基于6U CPCIe的TMS320C6678+KU060的信号处理板卡

基于6U CPCIe的TMS320C6678KU060的信号处理板卡 一、板卡概述 基于6U CPCIe的C6678KU060的信号处理板卡是新一代FPGA的高性能处理板卡。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司 XCKU060-2FFVA1156I作为主处理器&#xff0c;Xilinx 的Aritex XC7A200T作为辅助处…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

怎么制作网站

网站制作是一项需要技术和创意的工作。这篇文章将向你介绍如何制作一个网站&#xff0c;包括网站规划、网站设计、内容编写和网站发布等方面。 首先&#xff0c;要制作一个网站&#xff0c;你需要一个域名和一个主机。域名是网站的地址&#xff0c;而主机是存储网站所有的文件和…

【GAMES 101】图形学入门——着色(Shading)

定义&#xff1a;将不同材质内容应用于不同物体对象上的过程。着色只考虑着色点的存在&#xff0c;不考虑其他物体的遮挡等&#xff0c;因此不考虑阴影处理 一些前期内容的定义&#xff1a; 着色点&#xff08;Shading Point&#xff09;观测方向&#xff08;Viewer Directio…

Winfrom —— 打印水仙花数

输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数&#xff0c;其各位数字立方之和等于该数本身。 例如&#xff0c;153是一个水仙花数&#xff0c;因为15315&#xff0b;3 解题思路&#xff1a;水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分&#…

【数据结构】顺序表专题

前言 本篇文章我们来进行有关顺序表的专题训练&#xff0c;让我们一起来看一下有关顺序表的算法题 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 &#x1f4dd;若有问题 评论区见 &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 1.移除…

激光干涉仪应用拓展:透镜曲率半径测量

透镜是由透明物质&#xff08;如玻璃、水晶等&#xff09;制成的一种光学元件&#xff0c;广泛应用于安防、车载、数码相机、激光、光学仪器等各个领域。 曲率半径是透镜设计与制造的一个重要参数&#xff0c;在生产制造过程中常使用菲索型激光干涉仪通过测试干涉条纹&#xff…

面试经验分享 | 通关某公司面试靶场

0x00:探测IP 首先打开时候长这个样&#xff0c;一开始感觉是迷惑行为&#xff0c;试了试/admin&#xff0c;/login这些发现都没有 随后F12查看网络&#xff0c;看到几个js文件带有传参&#xff0c;就丢sqlmap跑了一下无果 随后也反查了域名一下&#xff0c;发现没有域名&#…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一&#xff1a;通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心&#xff0c;但又确乎说得上是19岁途中的又一枚勋章 从去年得知&#xff0c;纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客&#xff0c;记录好题和成长……感谢你们的关注&…

【消息队列】延迟消息

延时消息 延迟消息死信交换机延迟消息的插件 延迟消息 生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而在指定时间之后才收到消息 比如说演唱会的票&#xff0c;抢上了但是迟迟未支付&#xff0c;但是库存已经占用&#xff0c;就需要用到延迟消…

linux 搭建知识库文档系统 mm-wiki

目录 一、前言 二、常用的知识库文档工具 2.1 PingCode 2.2 语雀 2.3 Tettra 2.4 Zoho Wiki 2.5 Helpjuice 2.6 SlimWiki 2.7 Document360 2.8 MM-Wiki 2.9 其他工具补充 三、MM-Wiki 介绍 3.1 什么是MM-Wiki 3.2 MM-Wiki 特点 四、搭建MM-Wiki前置准备 4.1 前置…

【Harmony3.1/4.0】笔记七-选项卡布局

概念 当页面信息较多时&#xff0c;为了让用户能够聚焦于当前显示的内容&#xff0c;需要对页面内容进行分类&#xff0c;提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换&#xff0c;一方面提升查找信息的效率&#xff0c;另一方面精简用户单次获取到的…

前端css中盒子模型的各种属性

前端css中盒子模型 一、前言二、流程图三、盒子模型的各属性&#xff08;一&#xff09;、模型计算方式&#xff08;box-sizing&#xff09;&#xff08;二&#xff09;、边框&#xff08;border&#xff09;1.边框的颜色&#xff08;border-color&#xff09;2.边框的宽度&…

刚刚!MySQL8.4.0 LTS发布,接着再探

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

【开发工具】pythontutor——在线内存可视化工具

笔者在学习RISC-V时&#xff0c;希望找到一款可视化的内存工具&#xff0c;遗憾目前还未找到。发现了pythontutor这个网站&#xff0c;可以对C、python等多种语言进行内存可视化。结果似乎是x86架构的&#xff0c;符合小端存储。 贴一下网址&#xff0c;原准备依据开源版本进行…

python基础知识点(蓝桥杯python科目个人复习计划66)

今日复习内容&#xff1a;算法双周赛 第一题&#xff1a;疯狂星期六 题目描述&#xff1a; 麦肯鸡是一家名声在外的汉堡店&#xff0c;他们最近推出了一份名为vivo50的套餐&#xff0c;只需要在门口大声喊出vivo50&#xff0c;就可以获得这个套餐。 现在&#xff0c;请你打…

使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B

2024年4月18日&#xff0c;meta开源了Llama 3大模型[1]&#xff0c;虽然只有8B[2]和70B[3]两个版本&#xff0c;但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番&#xff0c;本人亲测Llama3-70B版本的推理能力十分接近于OpenAI的GPT-4[4]&#xff0c;何况还有一个4…