MyBatis 面试题, MyBatis 的缺点?
MyBatis 面试题, MyBatis 的缺点?
QA
Step 1
Q:: MyBatis 的缺点是什么?
A:: MyBatis 的缺点包括:1. 需要手动编写 SQL,这对于复杂查询可能增加工作量;2. 与 Hibernate 等 ORM 框架相比,MyBatis 更依赖于数据库,无法实现完全的数据库独立性;3. 当数据库结构或业务逻辑发生变动时,需要手动修改相应的 SQL 语句,维护成本较高;4.
由于其强大的灵活性,容易写出性能不佳的 SQL 语句,影响应用性能。
Step 2
Q:: MyBatis 如何处理缓存?
A:: MyBatis 提供了一级缓存(Session 缓存)和二级缓存(全局缓存)机制。一级缓存是默认开启的,是在 SqlSession 级别进行缓存,相同 SqlSession 的相同查询会从缓存中获取结果。二级缓存是跨 SqlSession 的,配置合适后可以在多个 SqlSession 之间共享缓存,但需要手动配置,包括配置缓存策略、序列化策略等。
Step 3
Q:: MyBatis 中的动态 SQL 是如何实现的?
A:: MyBatis 提供了 <if>``,
<choose>``,
<when>``,
<otherwise>``,
<foreach>
等标签来实现动态 SQL。这些标签允许根据条件动态地拼接 SQL 语句,减少了冗余的 SQL 代码,使代码更加灵活。例如,可以使用 <if>
标签根据条件选择性地添加 WHERE 子句,使用 <foreach>
标签来处理 IN 查询。
Step 4
Q:: MyBatis 与 Hibernate 的主要区别是什么?
A:: MyBatis 和 Hibernate 都是 ORM 框架,但它们的工作方式不同。Hibernate 是全自动的 ORM 框架,映射配置和 CRUD 操作由框架自动生成,开发者只需定义实体类和映射规则。而 MyBatis 是半自动的,开发者需要手动编写 SQL,MyBatis 提供了 XML 或注解的方式来将 SQL 语句与对象进行映射。相比之下,MyBatis 更加灵活,但也更依赖于开发者对 SQL 和数据库的掌控能力。