一、前言
类似的优秀的开源产品有很多 Ruoyi, el-admin 等等,如果你已经在这个行业工作了 3-5 年,我相信你手上也有自己的后台管理系统模版,哪怕他可能只是个半成品。
程序员必经之路:搭博客,写框架,然后不断地推倒重来。😄
俺也一样,github.com/Caoshenyang... EZ-ADMIN,EZ 取自 "easy" 谐音,我想要整一个简单易用的后台管理系统,基础功能都已经实现了,我平时的一些 MVP , 就是用这个来快速实现的。这次我将在这个基础上升级为 springboot 4 的版本,并且进一步完善他。
二、创建项目


创建成功后,启动项目

三、一些小调整
3.1. 将配置文件改成 yaml 格式
个人行为,我还是比较习惯 yaml 格式的写法,你也可以不改
3.2. 修改 pom 文件
- 删除了一些不用的空标签,模版自带的
- 配置阿里云仓库镜像
文章后面我会贴出完整的 pom 文件,所以这里我就不展示代码了。
四、ORM 框架选择
ORM 框架有很多,主流的像 mybatis、JPA,以及国产的 Jfinal 等等。这里我就不一一列举了,我主要就在 MyBatis 和 Spring Data JPA 中进行选择。
工作中,这两个我都用过,所以从功能以及生态来说,都很完善。
MyBatis有MyBatis-Plus增强工具,使用起来非常方便,一些简单的增删改查甚至不用写任何SQL,有完善的插件体系,基本涵盖了所有日常开发中的场景。JPA作为Spring官方首选的持久层解决方案,深度集成于Spring生态,通过Repository抽象层提供高度声明式的数据访问方式,同样很强大。
具体细节对比,网上有很多专门做对比的文章,我就不细说了,这里我列出了核心的几点比较。
| 维度 | MyBatis + MyBatis-Plus | JPA + 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年的时候公司项目用过)。
五、数据库选择
这里的数据库指的是关系型数据库,基本上就 MySQL 和 PostgreSQL 二选一,这里因为我选择的是 Spring Data JPA 标准的 ORM 框架,其实对于数据库的切换也是很方便的,所以其实无论选择哪个,后续切换的成本其实都不高。这里我选择 PostgreSQL ,因为我没用过,对!就是这个原因。我早就听闻 PostgreSQL 的强大,并且据说在某些方面已经超越了 MySQL,成为了现在开发的首选数据库了。
出于好奇,以及对于知识探索的渴望,我决定使用 PostgreSQL 。
这里列出一下我搜集到的核心对比
| 特性 | MySQL | PostgreSQL |
|---|---|---|
| 核心理念 | "简单、快速、实用",偏向互联网应用 | "功能强大、标准、严谨",偏向传统企业级应用 |
| SQL标准兼容 | 遵循标准,但更注重实用性和灵活性 | 严格遵循SQL标准,兼容性最好 |
| 架构特点 | 进程模型(旧版)/ 线程模型(新版) | 进程模型 |
六、Spring Data JPA + PostgreSQL 实现一个简单的增删改查
这里我本来是想将每一步都写出来的,怎么引入依赖,有哪些版本变更,后面发现,太繁琐了,有点啰嗦,好像又回到了多年前那种博客模式,所以思索再三,我将这一节的内容全部删除了。下面是完整的代码,后续也会一直更新,github.com/Caoshenyang...
我也不太喜欢在博客里搞一堆代码,看起来就很枯燥。
七、总结
在从技术选型到项目创建的过程中,我思考了很多:是稳妥地沿用自己熟悉的技术栈,走一遍已经验证过的老路?还是勇敢尝试不太熟悉的新方案,借机突破自己的舒适区?最终,我选择了后者。
这也正是我想传递的一个理念:不要被所谓"技术栈"束缚住手脚。不要因为没接触过就望而却步。我们首先是程序员,而不是仅仅被定义为"前端"或"后端"。在面对具体业务需求时,我们才是项目的主宰者。要对自己有充分的信心,像搭积木一样从容构建系统,根据实际需要选择合适的组件或工具,而不是被技术标签所限制。