


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
笔记本:14-MyBatis 创建时间:2019/9/7 21:55更新时间:2019/9/7 21:56 作者:pc941206 码农求职小助手:MyBatis高频面试题 更多资料请关注微信公众号:码农求职小助手 1、Mybatis 中 #和 $的区别是什么? 1、Mybatis 在处理 # 时,会将 SQL 中的 # 替换为 ? 号,调用 PreparedStatement 的 set 方法来赋值;使用 # 可以有效的防止 SQL 注入,提高系统安全性; 2、Mybatis在处理 $ 时,就是把 $ 替换成变量的值。 2、Mybatis 有几种分页方式? 1、数组分页; 1、Mybatis 中 #和 $的区别是什么? 2、Mybatis 有几种分页方式? 3、Mybatis 逻辑分页和物理分页的区别是什么? 4、Mybatis 是否支持延迟加载?延迟加载的原理是什么? 5、说一下 Mybatis 的一级缓存和二级缓存? 6、Mybatis 和 Hibernate 的区别有哪些? 7、Mybatis 有哪些执行器(Executor)? 8、Mybatis 分页插件的实现原理是什么? #是预编译处理,$是字符串替换 2、SQL 分页; 3、拦截器分页; 4、RowBounds 分页 3、Mybatis 逻辑分页和物理分页的区别是什么? 1、物理分页速度上并不一定快于逻辑分页,逻辑分页速度上也并不一定快于物理分页。 2、物理分页总是优于逻辑分页:没有必要将属于数据库端的压力加到应用端来,就算速度 上存在优势,然而其它性能上的优点足以弥补这个缺点。 4、Mybatis 是否支持延迟加载?延迟加载的原理是什么? 1、Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载, association 指的就是一对一,collection 指的就是一对多查询。在 Mybatis 配置文件 中,可以配置是否启用延迟加载 lazyLoadingEnabled = true|false。 2、它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器 方法,比如调用 a.getB().getName(),拦截器 invoke() 方法发现 a.getB() 是 null 值,那 么就会单独发送事先保存好的查询关联 B 对象的 SQL,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接着完成 a.getB().getName() 方法的调用。 这就是延迟加载的基本原理。 当然了,不光是 Mybatis,几乎所有的包括 Hibernate,支持延迟加载的原理都是一 样的。 5、说一下 Mybatis 的一级缓存和二级缓存? 一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓 存; 二级缓存:与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不 同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默 认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化 接口(可用来保存对象的状态),可在它的映射文件中配置 ; 对于缓存数据更新机制,当某一个作用域(一级缓存 Session / 二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。 6、Mybatis 和 Hibernate 的区别有哪些? 1、Mybatis 和 Hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员 自己编写 SQL 语句; 2、Mybatis 直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高,非常适合对 关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速 输出成果。但是灵活的前提是 Mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套 SQL 映 射文件,工作量大; 3、Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如 果用 Hibernate 开发可以节省很多代码,提高效率。 7、Mybatis 有哪些执行器(Executor)? Mybatis 有三种基本的执行器(Executor): 1、SimpleExecutor:每执行一次 update 或 select,就开启一个 Statement 对象,用 完立刻关闭 Statement 对象; 2、ReuseExecutor:执行 update 或 select,以 SQL 作为 key 查找 Statement 对象, 存在就使用,不存在就创建,用完后,不关闭 Statement 对象,而是放置于 Map 内,供 下一次使用。简言之,就是重复使用 Statement 对象; 3、BatchExecutor:执行 update(没有 select,JDBC 批处理不支持select),将所有 SQL 都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多 个 Statement 对象,每个 Statement对 象都是 addBatch() 完毕后,等待逐一执行 executeBatch() 批处理。与 JDBC 批处理相同。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人工智能工程师面试模拟题及答案解析
- 2025年一级建造师建筑工程管理全真模拟题及答案解析
- 装修公司人员管理办法
- 经营养生馆管理办法
- 要害部位保卫管理办法
- 《医疗器械网络销售监督管理办法》试题(含答案)
- 2025年养老护理员高级考试预测题及解析
- 2025年互联网营销师中级考试选品策略实战模拟题
- 财务做账流程管理办法
- 2025年医院感染诊断标准测试题(附答案)
- HG-T 6038-2022 聚乙烯蜡微粉
- 学前教育普及普惠督导评估内容和标准量化评分表
- 2024年苏州历史文化名城建设集团有限公司招聘笔试冲刺题(带答案解析)
- 医院保洁中央运输服务项目管理制度
- 《国际中文教育概论》课件 第三章 国际中文教育与跨文化教育
- 初中俄语七年级第一课课件
- pvc板材生产工艺流程图
- 新能源汽车功率电子基础 习题答案汇总(程夕明) 习题集1-6
- 安全出口和疏散指示
- 软件使用授权书
- 肥料、农药采购服务方案(技术方案)
评论
0/150
提交评论