在SSM框架中,通过MyBatis的Mapper接口定义数据库操作方法,在Service层调用Mapper方法执行SQL查询,查询结果会以Java对象或集合形式返回给Service层,最终由Controller层获取并处理这些数据。
在基于SSM(Spring + Spring MVC + MyBatis)框架的Java Web开发中,从数据库获取数据是核心操作之一,这个过程涉及多个组件的协作,理解其流程对于开发者至关重要,下面我们将详细拆解“SSM如何获取数据库中的值”:

核心流程:分层协作
SSM框架遵循典型的分层架构(Controller -> Service -> Mapper/Dao),数据获取通常遵循以下路径:
- 前端发起请求: 用户通过浏览器访问某个URL(
/user/list
)。
- Controller接收请求:
- Spring MVC的
DispatcherServlet
根据URL找到对应的Controller
类和方法。
Controller
方法接收请求参数(如果需要),并决定调用哪个Service
层的服务。
- 核心动作:
Controller
调用Service
接口的一个方法(如 userService.getAllUsers()
),并期望该方法返回所需的数据(例如一个用户列表List<User>
)。
- Service处理业务逻辑:
Service
层(通常是接口+实现类)负责具体的业务逻辑处理。
- 核心动作:
Service
实现类中的方法(如 UserServiceImpl.getAllUsers()
)会调用Mapper
(或Dao
)接口的方法来执行实际的数据库操作。
Service
层可以在此处进行数据校验、业务规则处理、事务管理(通过@Transactional
注解)等,它本身不直接操作数据库,而是协调Mapper
。
- Mapper (MyBatis) 执行SQL:
Mapper
接口(也称为Dao
接口)由MyBatis框架动态实现。
- 核心动作:
Service
调用Mapper
接口的方法(如 userMapper.selectAllUsers()
),这个方法与一个具体的SQL映射语句(写在XML文件或通过注解)相关联。
- MyBatis根据
Mapper
方法调用:
- 组装SQL语句(根据XML配置或注解)。
- 通过数据库连接池获取数据库连接。
- 执行SQL(查询、插入、更新、删除)。
- 将SQL执行结果(
ResultSet
)映射成Java对象(或对象集合、Map等)。
- 数据返回:
- MyBatis将映射好的Java对象(例如一个
User
对象或List<User>
)作为Mapper
方法调用的返回值,返回给Service
层。
Service
层(可选择进行进一步处理或直接)将数据返回给Controller
。
Controller
将数据放入Model
(或ModelAndView
)对象中,或者使用@ResponseBody
注解(配合如Spring Boot的Jackson库)将数据直接序列化为JSON/XML等格式。
- Spring MVC将处理结果(视图名称或JSON数据)通过
DispatcherServlet
返回给前端(浏览器或客户端)。
关键技术与细节:
-
MyBatis SQL映射: 这是实际执行数据库查询的核心。
- *XML映射文件 (`Mapper.xml
):** 最常见的方式,在XML文件中定义