在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文件中定义