controller、service、dao,view,springmvc、mybatis之间如何交互
时间: 2023-10-20 11:41:20 浏览: 148
在SSM框架中,Controller、Service、DAO和View之间的交互主要由SpringMVC和MyBatis框架负责。简单来说,整个流程如下:
1. 客户端发送请求到SpringMVC的DispatcherServlet。
2. DispatcherServlet根据请求的URL和请求参数,找到对应的Controller,交给Controller处理。
3. Controller调用Service层的方法,处理业务逻辑,调用DAO层的方法访问数据库完成数据的读取或写入。
4. DAO层使用MyBatis框架提供的SqlSessionFactory创建SqlSession,通过Mapper接口调用对应的SQL语句完成数据库操作。
5. Service层处理完业务后,将处理结果返回给Controller。
6. Controller将结果处理成ModelAndView对象,传递给View层。
7. View层使用JSP或Thymeleaf等模板引擎技术,将ModelAndView中的数据渲染到HTML页面中,最终将结果返回给客户端。
整个过程中,SpringMVC负责接收请求,调用Controller和View进行请求处理和响应,而MyBatis框架负责与数据库的交互,通过DAO层和Mapper接口提供数据库访问的能力。Service层则作为业务逻辑处理的中间层,负责协调DAO和Controller之间的数据传递和处理。
相关问题
Springmvc整合mybatis
SpringMVC和MyBatis是目前Java Web开发中比较常用的框架,它们各自有着自己的优点。SpringMVC是一个MVC框架,可以很好地实现Web应用程序的分层开发,而MyBatis是一个持久层框架,可以很好地实现与数据库的交互。
将SpringMVC和MyBatis整合起来,可以很好地实现Web应用程序与数据库之间的交互。下面是整合步骤:
1.引入相关依赖
在pom.xml文件中引入SpringMVC和MyBatis相关依赖:
```xml
<!-- SpringMVC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
```
2.配置数据源
在Spring配置文件中配置数据源,以MySQL为例:
```xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
```
3.配置MyBatis
在Spring配置文件中配置MyBatis:
```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.example.model"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
</bean>
```
其中,typeAliasesPackage指定实体类所在的包,mapperLocations指定MyBatis映射文件所在的路径。
4.配置SpringMVC
在Spring配置文件中配置SpringMVC:
```xml
<!--启用SpringMVC注解驱动-->
<mvc:annotation-driven />
<!--配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--静态资源处理-->
<mvc:resources mapping="/static/**" location="/static/"/>
```
其中,mvc:annotation-driven启用SpringMVC注解驱动,viewResolver配置视图解析器,mvc:resources配置静态资源处理。
5.编写Mapper接口和映射文件
编写Mapper接口和映射文件,以User为例:
```java
public interface UserMapper {
User getUserById(int id);
}
<mapper namespace="com.example.dao.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
6.编写Service和Controller
编写Service和Controller,以User为例:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
return userMapper.getUserById(id);
}
}
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable("id") int id, Model model) {
User user = userService.getUserById(id);
model.addAttribute("user", user);
return "user";
}
}
```
7.编写JSP页面
在Web应用程序的WEB-INF/views目录下创建一个user.jsp文件,以显示用户信息:
```html
<!DOCTYPE html>
<html>
<head>
<title>User Info</title>
</head>
<body>
<h1>User Info</h1>
<p>ID: ${user.id}</p>
<p>Name: ${user.name}</p>
<p>Age: ${user.age}</p>
</body>
</html>
```
整合完成后,启动Web应用程序,访问http://localhost:8080/user/1即可查看ID为1的用户信息。
阅读全文