springmvc整合mybatis示例
时间: 2024-08-13 22:01:50 浏览: 78
SpringMVC整合MyBatis示例
5星 · 资源好评率100%
Spring MVC 整合 MyBatis 的示例通常涉及以下几个步骤:
1. 添加依赖:在你的 Maven 或者 Gradle 项目中添加 Spring Web 和 MyBatis 的依赖。
```xml
<!-- Maven 示例 -->
<dependency>
<groupId>org.mybatis.spring</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.5.6</version>
</dependency>
<!-- Gradle 示例 -->
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.5.6'
```
2. 配置数据源:Spring Boot 自带了对数据源的支持,如果使用 JPA,你需要配置 DataSource。对于 MyBatis,不需要额外的配置。
3. 创建 Mapper 接口:定义 SQL 查询操作的接口,并通过 `@Mapper` 注解标记。
```java
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUser(int id);
}
```
4. 映射 XML 文件:编写 XML 映射文件,将 Mapper 接口的方法映射到具体的 SQL 语句。
```xml
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="getUser" resultType="com.example.demo.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
5. 配置 SqlSessionFactory:在 Spring 容器启动时注入到应用中。
```java
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
// 使用 MyBatis Builder API 或者 SqlSessionFactoryBuilder 构建工厂
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean.getObject();
}
}
```
6. 创建 Service 类:注入 SqlSession 对象,利用它来执行 SQL 查询并处理结果。
```java
@Service
public class UserService {
private final SqlSessionFactory sqlSessionFactory;
@Autowired
public UserService(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
public User getUser(int id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectOne("UserMapper.getUser", id);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
```
7. 在 Controller 中调用服务:创建 RESTful 控制器来访问 Service 并返回结果。
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable int id) {
User user = userService.getUser(id);
// 返回响应
}
}
```
阅读全文