前言:这篇我们基于前面学习的基础知识,来做一个基于前后端分离的业务场景下的一个后端智能员工管理系统。
我们采用三层架构的软件设计模式,将应用程序分为三个逻辑层
1. Controller 层(控制层/表现层)
作用:
-
接收用户请求(HTTP 请求)
-
调用 Service 层处理业务
-
返回响应结果(JSON/HTML)

2.在类中定义@RestController
-
✅ 参数校验(简单校验)
-
✅ 请求转发
-
✅ 响应封装
-
❌ 不应该包含业务逻辑
-
❌ 不应该直接操作数据库
2. Service 层(业务层/服务层)
作用(这是重点):
-
处理核心业务逻辑
-
事务管理(@Transactional)
-
协调多个数据操作

3. Mapper/Repository 层(数据访问层/持久层)
作用:
-
直接与数据库交互
-
执行 SQL 操作
-
封装数据存取细节
-
✅ 执行 CRUD 操作
-
✅ 实现 SQL 查询
-
❌ 不应该包含业务逻辑
-
❌ 不应该处理业务流程

这里我们要注意一开始选择的依赖,是JPA还是Mybatis,
@Mapper 是 MyBatis 的注解
对于初学者: 对于企业项目:
用 JPA! 因为: 用 MyBatis! 因为:
-
更简单,不用写 SQL SQL 可控,性能优化方便
-
教程可能用的是 JPA 复杂查询更灵活
-
快速完成项目 国内企业更常用
流程解释:
用户请求>Controller >Service>Mapper >数据库
>查询结果>Mapper>Service>Controller>响应结果到用户
那我们在application.prprttities中配置的是什么:
++在 application.properties 中配置的是 MyBatis 和数据库连接。完整的配置代码。++
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234
#配置mybatis的日志, 指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关 a_column ------> aCloumn
mybatis.configuration.map-underscore-to-camel-case=true
REST风格
++REST(REpresentational State Transfer),表述性状态转换,它是一种软件架构风格
http://localhost:8080/users/1 GET:查询id为1的用户
http://1ocalhost:8080/users POST:新增用户++
++http://1ocalhost:8080/users PUT:修改用户
http://1ocalhost:8080/users/1 DELETE:删除id为1的用户++
注意事项
++REST是风格,是约定方式,约定不是规定,可以打破。
描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。如:users、emps、books++

部门管理:
基础步骤描述:我们在controller类中接收用户请求,并在其中定义了一个方法Result,用于直观的返回结果,并使用了注解@Slf4j,@RequestMapping。之后我们启动测试类,并用postman模拟用户发送请求,返回给postman一系列的查询结果。
1.我们是在controller方法中,因为接收到用户的查询请求,因此定义了list方法,并在其中调用了service中的list方法,包装结果并返回。
2.service接口类中定义方法签名,在实现类中实现方法,调用Mapper查询数据;
3.Mapper中查询数据执行sql语句,并且把查询的结果返回到集合中,其中Mybatis的神奇之处就是将数据结果映射到集合中。
-
List<Dept>:返回类型是Dept对象的列表 -
list():方法名(通常对应 XML 中的 SQL 语句 ID) -
整体意思:查询所有部门信息,以
Dept对象列表的形式返回
🔍 MyBatis 的魔法:接口与 SQL 的绑定
-
Controller:管"要什么"(接收请求,返回结果)
-
Service:管"怎么做"(业务逻辑处理)
-
Mapper:管"拿数据"(执行SQL)