MyBatis 14道面试题和答案.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以及面试准备都至关重要。
- 粉丝: 44
- 资源: 4368
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 此存储库收集了所有有趣的 Python 单行代码 欢迎随意提交你的代码!.zip
- 高考志愿智能推荐-JAVA-基于springBoot高考志愿智能推荐系统设计与实现
- 标准 Python 记录器的 Json 格式化程序.zip
- kernel-5.15-rc7.zip
- 来自我在 Udemy 上的完整 Python 课程的代码库 .zip
- 来自微软的免费 Edx 课程.zip
- c++小游戏猜数字(基础)
- 金铲铲S13双城之战自动拿牌助手
- x64dbg-development-2022-09-07-14-52.zip
- 多彩吉安红色旅游网站-JAVA-基于springBoot多彩吉安红色旅游网站的设计与实现