m y batis面试题
时间: 2024-01-18 15:04:52 浏览: 112
好的,以下是一些 MyBatis 面试题:
1. 什么是 MyBatis?
MyBatis 是一款开源的持久层框架,它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射,提供了一种优雅的方式来访问关系型数据库。
2. MyBatis 的优点有哪些?
MyBatis 的优点包括:
- 简单易学:MyBatis 的 API 简洁明了,易于理解和学习。
- 灵活性高:MyBatis 支持定制化 SQL、存储过程调用和高级映射。
- 易于与其他框架集成:MyBatis 可以与 Spring、Spring Boot、Spring MVC、Spring Cloud 等框架集成。
- 性能高:MyBatis 通过预编译 SQL 语句和二级缓存提高了 SQL 查询的执行效率。
3. MyBatis 的核心组件有哪些?
MyBatis 的核心组件包括:
- SqlSessionFactory:负责创建 SqlSession 实例。
- SqlSession:提供了数据库操作的 API,包括 CRUD 操作、批处理、事务管理等。
- Mapper:通过 XML 文件或注解的方式描述 SQL 语句与 Java 对象的映射关系。
- TypeHandler:将 Java 对象与数据库的数据类型进行转换。
- Executor:负责执行 SQL 语句并返回结果。
4. MyBatis 的动态 SQL 是什么?
动态 SQL 是指根据不同的条件,动态生成 SQL 语句。MyBatis 提供了一些动态 SQL 标签,如 if、choose、when、otherwise、trim、where、set、foreach 等,可以根据需要动态生成 SQL 语句,从而提高 SQL 语句的灵活性和可维护性。
5. MyBatis 的一级、二级缓存分别是什么?
MyBatis 的一级缓存是指 SqlSession 的缓存,它是默认开启的。当 SqlSession 执行查询操作时,结果会被缓存到一级缓存中,下次查询相同的 SQL 语句时,可以直接从缓存中获取结果,不再执行 SQL 语句。一级缓存的作用域是 SqlSession,因此在不同的 SqlSession 中,一级缓存是不共享的。
MyBatis 的二级缓存是指 SqlSessionFactory 的缓存,它是需要手动开启的。当 SqlSession 执行查询操作时,结果会被缓存到二级缓存中,下次查询相同的 SQL 语句时,可以直接从缓存中获取结果,不再执行 SQL 语句。二级缓存的作用域是 SqlSessionFactory,因此在不同的 SqlSession 中,二级缓存是共享的。
阅读全文