MyBatis 14道面试题和答案.docx
需积分: 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
最新资源
- 基于Springboot+Vue植物健康系统-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue制造装备物联及生产管理ERP系统-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue智慧图书管理系统设计与实现-毕业源码案例设计(高分项目).zip
- 多模态大语言模型领域进展分享
- 伟创SD600方案伺服EtherCAT电路图说明书代码
- 基于Matlab实现无线传感器网络WSN仿真(源码).rar
- 西门子S7-1200控制v90伺服PN通讯完整项目程序 1.PN总线通讯控制v90伺服 ModbusRTU通讯 西门子HMI人机界面控制 2.程序可以直接复制使用,全套EPLAN图纸;包括设备图纸
- 技术革新引领未来-生成式AI塑造核心发展引擎白皮书
- Matlab dSPACE 永磁同步电机控制 基于dspace的永磁同步电机矢量控制系统模型,可在dspace实验平台开展实验
- 大厂扫地机器人 源代码,freertos实时操作系统,企业级应用源码,适合需要学习嵌入式以及实时操作系统的工程师,32端代码能实现延边避障防跌 落充电等功能 硬件驱动包含 陀螺仪姿态传感器bmi1
- 利用MATLAB GUI设计平台,设计多算法雷达一维恒虚警检测CFAR可视化界面,通过选择噪声类型、目标类型、算法类型,手动输入相关参数,可视化显示噪声波形与目标检测的回波-检测门限波形图
- 基于pymodis库的MODIS卫星数据自动化下载方法与应用
- 基于Python+Flask+Vue深度学习的肿瘤辅助诊断系统源码+文档说明(高分毕设)
- 改进蚁群算法 改进flod算法对路径进行双向平滑度优化,提高路径的平滑度 自己研究编写的Matlab路径规划算法 蚁群算法路径规划 自己研究算法对比 可自行设置起始点,目标点,自由更地图
- 2024年智算平台运维运营技术研究报告
- 新能源汽车VCU开发模型及控制策略 目前各大行业都纷纷跨行做新能源汽车,紧缺VCU工程师,特别是涉及新能源三电系统,工资仅仅低于无人驾驶、智能驾驶岗位 内容如下: 新能源汽车整车控制器VCU学习