MyBatis 14道面试题和答案.docx

preview
需积分: 0 0 下载量 96 浏览量 更新于2023-06-14 收藏 23KB DOCX 举报
MyBatis是一个流行的Java持久层框架,它解决了JDBC编程中的许多不足,提高了开发效率和性能。以下是对MyBatis核心特性和相关知识点的详细解释: 1. **JDBC的不足与MyBatis的解决方案**: - **数据库连接管理**:JDBC创建和释放连接频繁,消耗资源。MyBatis通过在`SQLMapConfig.xml`中配置数据连接池(如C3P0或Druid)来管理数据库连接,提高了连接复用率,降低了资源浪费。 - **SQL语句维护**:JDBC中的SQL硬编码不易维护。MyBatis将SQL语句分离到mapper.xml文件中,使得SQL和Java代码解耦,方便修改。 - **参数传递**:JDBC传递参数繁琐,MyBatis通过动态SQL和参数映射简化这一过程,能够自动将Java对象转化为SQL语句的参数。 - **结果集解析**:MyBatis自动将SQL执行结果映射到Java对象,避免了手动遍历和解析。 2. **MyBatis编程步骤**: - 创建`SQLSessionFactory`,它是MyBatis的核心,负责创建`SQLSession`实例。 - 通过`SQLSessionFactory`获取`SQLSession`,`SQLSession`用于执行数据库操作。 - 使用`SQLSession`执行SQL语句,包括增删查改操作。 - 调用`session.commit()`提交事务。 - 最后调用`session.close()`关闭会话。 3. **MyBatis与Hibernate的不同**: - MyBatis是一个半自动的ORM框架,需要程序员编写部分SQL,而Hibernate是全自动ORM框架,提供数据库无关性。 - MyBatis灵活度更高,可直接控制SQL,适用于需求多变的场景,但不支持数据库无关性。 - Hibernate提供了一级缓存和二级缓存,而MyBatis的一级缓存默认开启,二级缓存需要手动配置。 4. **Mapper接口调用要求**: - 接口方法名应与mapper.xml中的SQL id相同。 - 输入参数类型应与mapper.xml中`<parameterType>`匹配。 - 输出参数类型应与mapper.xml中`<resultType>`匹配。 - `Mapper.xml`文件的`namespace`应为接口的全限定类名。 5. **`SQLMapConfig.xml`配置内容**: - `properties`:加载配置文件或属性。 - `settings`:全局设置,如缓存、日志等。 - `typeAliases`:类型别名,简化类型名称。 - `typeHandlers`:处理Java类型与数据库类型的转换。 - `objectFactory`:自定义对象工厂。 - `plugins`:插件配置,增强MyBatis功能。 - `environments`:数据库环境配置,包含事务管理和数据源。 - `mappers`:映射器配置,关联mapper.xml文件。 6. **MyBatis缓存**: - **一级缓存**:基于`SQLSession`,在同一会话内,相同SQL的第二次查询会从缓存中获取,但执行DML操作后会清空缓存。 - **二级缓存**:跨`SQLSession`的缓存,基于mapper,需要手动开启,可以在多个会话之间共享数据,但需要注意并发问题。 以上内容涵盖了MyBatis的基本概念、使用方法以及优化策略,这些都是MyBatis面试中常见的知识点。理解并熟练掌握这些内容对于在实际项目中使用MyBatis以及面试准备都至关重要。
老歪不歪
  • 粉丝: 59
  • 资源: 4366
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源