MyBatis面试深度解析:2023年关键知识点与答案

需积分: 5 0 下载量 64 浏览量 更新于2024-08-03 收藏 10KB MD 举报
"MyBatis最新2021年面试题大汇总,附答案" 在面试中,对MyBatis的掌握程度常常是评估一个开发者在持久层技术理解上的关键。以下是一些关于MyBatis的重要知识点: ### 1、Hibernate和MyBatis的区别 - **相同点**:两者都是针对JDBC的封装,属于数据访问对象(DAO)层的框架,用于简化数据库操作。 - **不同点**: - MyBatis是一个半自动映射框架,它需要手动配置Java对象与SQL查询结果之间的映射关系,对于多表关联关系的配置相对简单。 - Hibernate则是一个全自动映射框架,它将Java对象直接映射到数据库表,配置相对复杂,支持多表关联关系。 ### 2、MyBatis的映射和对象封装 MyBatis提供两种主要的映射方式来将SQL执行结果封装为目标对象: - **标签映射**:通过`<resultMap>`标签定义列名和对象属性的对应关系,需要逐一指定。 - **别名映射**:利用SQL中的列别名,如`T_NAME AS NAME`,MyBatis会忽略大小写,智能匹配对象属性。这种方法更灵活,但需要遵循一定的命名规则。 在执行查询后,MyBatis通过反射创建目标对象,并使用反射机制为对象的属性赋值。未找到映射关系的属性将不会被赋值。 ### 3、MyBatis编程步骤 - **创建SQLSessionFactory**:这是MyBatis的核心,用于创建SQLSession实例。 - **获取SQLSession**:通过SQLSessionFactory创建SQLSession对象,它是与数据库交互的主要接口。 - **执行数据库操作**:在SQLSession上执行CRUD操作(创建、读取、更新、删除)。 - **提交事务**:调用`session.commit()`提交事务,确保数据持久化。 - **关闭会话**:最后,使用`session.close()`关闭SQLSession,释放资源。 ### 4、Mapper的编写方式 MyBatis支持多种Mapper的实现方式: - **接口实现类继承SqlSessionDaoSupport**:这种方式需要定义Mapper接口、实现类以及对应的mapper.xml文件,实现类通常会继承`SqlSessionDaoSupport`,提供基本的DAO操作。 - **XML配置文件中的SQL语句**:在mapper.xml文件中直接编写SQL,通过`@Select`、`@Insert`等注解与接口方法关联。 - **注解方式**:在Mapper接口的方法上使用注解如`@Select`、`@Insert`等直接定义SQL,无需额外的XML配置文件。 - **动态SQL**:MyBatis的动态SQL功能允许在XML或注解中根据条件动态生成SQL语句,提高了灵活性。 ### 5、MyBatis的其他关键特性 - **缓存机制**:MyBatis提供了本地缓存和二级缓存,可以提高数据访问效率。 - **参数映射**:支持`@Param`注解进行参数绑定,以及使用`#{}`占位符进行复杂参数传递。 - **结果集映射**:除了上述的列名与属性的映射,还可以通过`<collection>`标签处理一对多、多对多的关系映射。 - **动态SQL**:`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签使得在XML中构建SQL变得灵活。 - **事务管理**:MyBatis提供了对事务的控制,可以在业务逻辑中决定何时提交或回滚事务。 掌握这些知识点,将有助于你在面试中展示对MyBatis的深入理解和应用能力。