Day 19:02. 基于 SpringBoot4 开发后台管理系统-项目初始化

173 阅读4分钟

一、前言

类似的优秀的开源产品有很多 Ruoyi, el-admin 等等,如果你已经在这个行业工作了 3-5 年,我相信你手上也有自己的后台管理系统模版,哪怕他可能只是个半成品。

程序员必经之路:搭博客,写框架,然后不断地推倒重来。😄

俺也一样,github.com/Caoshenyang… EZ-ADMINEZ 取自 “easy” 谐音,我想要整一个简单易用的后台管理系统,基础功能都已经实现了,我平时的一些 MVP , 就是用这个来快速实现的。这次我将在这个基础上升级为 springboot 4 的版本,并且进一步完善他。

二、创建项目

image-20251201140627101

image-20251201140652369

创建成功后,启动项目

image-20251201145326738

三、一些小调整

3.1. 将配置文件改成 yaml 格式

个人行为,我还是比较习惯 yaml 格式的写法,你也可以不改

3.2. 修改 pom 文件

  • 删除了一些不用的空标签,模版自带的
  • 配置阿里云仓库镜像

文章后面我会贴出完整的 pom 文件,所以这里我就不展示代码了。

四、ORM 框架选择

ORM 框架有很多,主流的像 mybatisJPA,以及国产的 Jfinal 等等。这里我就不一一列举了,我主要就在 MyBatisSpring Data JPA 中进行选择。

工作中,这两个我都用过,所以从功能以及生态来说,都很完善。

  • MyBatisMyBatis-Plus 增强工具,使用起来非常方便,一些简单的增删改查甚至不用写任何 SQL,有完善的插件体系,基本涵盖了所有日常开发中的场景。
  • JPA 作为 Spring 官方首选的持久层解决方案,深度集成于 Spring 生态,通过 Repository 抽象层提供高度声明式的数据访问方式,同样很强大。

具体细节对比,网上有很多专门做对比的文章,我就不细说了,这里我列出了核心的几点比较。

维度MyBatis + MyBatis-PlusJPA + Spring Data JPA
核心理念SQL映射框架对象关系映射(ORM)框架
技术定位"Sql is Code" 理念的增强实现符合 JPA 标准的官方 ORM 方案
核心优势SQL 控制力 + 开发效率的完美平衡声明式编程 + 深度框架集成
关键差异拥抱SQL,认为SQL是强大的资产。隐藏SQL,认为数据库细节不应污染业务代码。
适用场景需要精细控制 SQL 的复杂业务系统快速迭代、领域驱动的新项目

这里我选择 Spring Data JPA

  • 首先第一点契合 Spring Boot 4
  • 其次作为后台管理项目,业务简单;
  • 最后一点,因为现在大多数都是 MyBatis-Plus,我想再试试 Spring Data JPA (我还是 2018 年的时候公司项目用过)。

五、数据库选择

这里的数据库指的是关系型数据库,基本上就 MySQLPostgreSQL 二选一,这里因为我选择的是 Spring Data JPA 标准的 ORM 框架,其实对于数据库的切换也是很方便的,所以其实无论选择哪个,后续切换的成本其实都不高。这里我选择 PostgreSQL ,因为我没用过,对!就是这个原因。我早就听闻 PostgreSQL 的强大,并且据说在某些方面已经超越了 MySQL,成为了现在开发的首选数据库了。

出于好奇,以及对于知识探索的渴望,我决定使用 PostgreSQL

这里列出一下我搜集到的核心对比

特性MySQLPostgreSQL
核心理念"简单、快速、实用",偏向互联网应用"功能强大、标准、严谨",偏向传统企业级应用
SQL标准兼容遵循标准,但更注重实用性和灵活性严格遵循SQL标准,兼容性最好
架构特点进程模型(旧版)/ 线程模型(新版)进程模型

六、Spring Data JPA + PostgreSQL 实现一个简单的增删改查

这里我本来是想将每一步都写出来的,怎么引入依赖,有哪些版本变更,后面发现,太繁琐了,有点啰嗦,好像又回到了多年前那种博客模式,所以思索再三,我将这一节的内容全部删除了。下面是完整的代码,后续也会一直更新,github.com/Caoshenyang…

我也不太喜欢在博客里搞一堆代码,看起来就很枯燥。

七、总结

在从技术选型到项目创建的过程中,我思考了很多:是稳妥地沿用自己熟悉的技术栈,走一遍已经验证过的老路?还是勇敢尝试不太熟悉的新方案,借机突破自己的舒适区?最终,我选择了后者。

这也正是我想传递的一个理念:不要被所谓“技术栈”束缚住手脚。不要因为没接触过就望而却步。我们首先是程序员,而不是仅仅被定义为“前端”或“后端”。在面对具体业务需求时,我们才是项目的主宰者。要对自己有充分的信心,像搭积木一样从容构建系统,根据实际需要选择合适的组件或工具,而不是被技术标签所限制。