spring boot spring mybatis 面试题
时间: 2025-05-16 08:48:22 浏览: 15
### Spring Boot、Spring 和 MyBatis 的常见面试问题及答案
#### 1. **什么是 MyBatis?**
MyBatis 是一种持久层框架,它支持定制化 SQL 查询、存储过程以及高级映射功能。通过 XML 或注解的方式定义数据库操作逻辑[^2]。
#### 2. **Spring Boot 中如何集成 MyBatis?**
在 Spring Boot 中可以通过引入 `mybatis-spring-boot-starter` 来快速实现 MyBatis 的集成。该 Starter 提供了自动配置的功能,简化了开发流程[^1]。
以下是典型的 Maven 配置方式:
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.x.x</version>
</dependency>
```
#### 3. **MyBatis 和 Hibernate 的区别是什么?**
- **MyBatis** 是半自动化 ORM 框架,开发者需要手动编写 SQL 语句并维护其执行逻辑。
- **Hibernate** 是全自动化的 ORM 框架,能够自动生成 SQL 并处理大部分底层细节。
#### 4. **为什么要在 Spring Boot 中使用 MyBatis 而不是原生 JDBC?**
相比于原生 JDBC,MyBatis 提供了更简洁的 API 接口和动态 SQL 支持能力,减少了大量重复性的代码工作量。同时,借助 Spring Boot 自动装配特性可以进一步降低复杂度。
#### 5. **解释一下 @Mapper 注解的作用?**
`@Mapper` 是 MyBatis 提供的一个特殊注解,用于标记接口类作为 Mapper 映射器。当启用扫描机制时(如通过 `@MapperScan`),这些被标注的接口会被识别出来并与对应的 XML 文件关联起来完成方法调用到实际SQL查询之间的桥接作用[^3]。
#### 6. **如果遇到版本冲突怎么办?比如 Spring Boot 3 整合 MyBatis Plus 出现依赖不兼容的情况该如何解决?**
对于这种情况通常有两种解决方案:一是调整各自组件的具体版本号使其相互匹配;二是利用排除法移除不必要的传递性依赖项后再重新指定合适的替代品来满足需求场景下的正常运行环境要求。
---
### 示例代码片段展示如何创建简单的 Repository 层服务
下面是一个基于 Spring Boot 和 MyBatis 构建的基础 CRUD 功能的例子:
```java
// 定义实体对象 User.java
public class User {
private Integer id;
private String name;
// Getter & Setter 方法省略...
}
// 创建 DAO 接口 IUserDao.java
@Mapper
public interface IUserDao {
List<User> findAll();
void insert(User user);
}
// Controller 控制器部分 UserController.java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private IUserDao userDao;
@GetMapping("")
public ResponseEntity<List<User>> getAllUsers() {
return new ResponseEntity<>(userDao.findAll(), HttpStatus.OK);
}
@PostMapping("")
public ResponseEntity<Void> createUser(@RequestBody User user) {
userDao.insert(user);
return new ResponseEntity<>(HttpStatus.CREATED);
}
}
```
---
阅读全文
相关推荐


















