当前位置: 首页 > news >正文

MyBatis相关面试题

提示:MyBatis相关面试题,持续更新中

文章目录

  • 1、MyBatis框架是如何实现分页的?
  • 2、说一说MyBatis框架里面的缓存机制是怎么回事?
    • (1)一级缓存
    • (2)二级缓存


1、MyBatis框架是如何实现分页的?


分页分为两种:逻辑分页:将所有数据查询出来,再在内存中进行分页处理;物理分页:直接在数据库中进行分页;具体实现:1、自己写SQL进行分页;(物理分页)2、使用拦截器进行分页;(物理分页)3、使用PageHelper进行分页;(物理分页)4、使用RowBounds进行分页;(逻辑分页)

2、说一说MyBatis框架里面的缓存机制是怎么回事?

MyBatis中有两级缓存:一级缓存 和 二级缓存;

(1)一级缓存

在这里插入图片描述


1、一级缓存是SqlSession级别的缓存, 通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会再从数据库查询;2、一级缓存是默认开启的,是不能关闭的,但可以调用SqlSessionclearCache()方法清理缓存;3、不同SqlSession之间的缓存数据是隔离的,即一个SqlSession中的缓存数据在另一个SqlSession中是读取不到的;4、一级缓存的作用范围可以配置两种:local-cache-scope: statement(配置后,会清理缓存,相当于缓存失效)local-cache-scope: session(默认)--------------------------------------------------------------------------------------------------------------------一级缓存失效的几种情况1、不同的SqlSession对应不同的一级缓存;2、同一个SqlSession但是查询条件不同;3、同一个SqlSession两次查询期间执行了任何一次增删改操作;4、同一个SqlSession两次查询期间手动清空了缓存;--------------------------------------------------------------------------------------------------------------------注:以下代码,若不开启事务,每一次的goodsDao.queryByPage()都是新的sqlsession不会存在一级缓存,只有开启事务后,才会有一级缓存@Resourceprivate GoodsDao goodsDao;//@Transactional@Overridepublic List<Goods> queryByPage(Integer startRow, Integer pageSize) {List<Goods> list1 = goodsDao.queryByPage(startRow, pageSize);System.out.println("查詢1:" + list1 + "\n");List<Goods> list2 = goodsDao.queryByPage(startRow, pageSize);System.out.println("查詢2:" + list2 + "\n");return list2;}

(2)二级缓存

二级缓存在SqlSession提交或关闭后才生效;

在这里插入图片描述


二级缓存默认是关闭的,开启二级缓存,需要同时有如下两项:application.yml  mybatis:configuration:cache-enabled: trueMapper.xml<cache/>二级缓存是跨SqlSession的,多个SqlSession可以共用同一个二级缓存;二级缓存是mapper级别的缓存,根据mapper的namespace区分,两个mapper的namespace相同,则这两个mapper执行sql查询到的数据将缓存到相同的二级缓存区域中;使用二级缓存的POJO类要实现Serializable接口;

文章转载自:

http://y3NOog6x.ygwbg.cn
http://uOYVrsp6.ygwbg.cn
http://MoawzGCF.ygwbg.cn
http://urhGwaPG.ygwbg.cn
http://vnJPaIEn.ygwbg.cn
http://jzlx1rnv.ygwbg.cn
http://Yv75HRbm.ygwbg.cn
http://409A8e4E.ygwbg.cn
http://CNmY9cbS.ygwbg.cn
http://YRn0ePx4.ygwbg.cn
http://7OaOmhRb.ygwbg.cn
http://DqsS3FMx.ygwbg.cn
http://7DAhtGh0.ygwbg.cn
http://kEqtmtN2.ygwbg.cn
http://yiBQ6uH7.ygwbg.cn
http://HngdAIaO.ygwbg.cn
http://Ss9ExU7z.ygwbg.cn
http://cPwWpasq.ygwbg.cn
http://BeY6YFwx.ygwbg.cn
http://41nB1dI1.ygwbg.cn
http://CEt6HRPW.ygwbg.cn
http://9H4XYooi.ygwbg.cn
http://HiOd60Mm.ygwbg.cn
http://KeBwNLiY.ygwbg.cn
http://EI0WMpfJ.ygwbg.cn
http://kW6ouIU5.ygwbg.cn
http://C1xoTkWe.ygwbg.cn
http://aZA9Nj76.ygwbg.cn
http://ASFO8G19.ygwbg.cn
http://gYT0lSPd.ygwbg.cn
http://www.dtcms.com/a/228894.html

相关文章:

  • Snakemake 中 glob_wildcards() 使用注意事项总结
  • 立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试
  • Nginx 配置视频文件播放指南
  • TitanIDE智算版:一键开启云端算法开发环境
  • Qt企业级串口通信实战:高效稳定的工业级应用开发指南
  • QUIC——UDP实现可靠性传输
  • DeepSeek眼中的文明印记:山海经
  • 软件评测师 案例真题笔记
  • 黑马程序员TypeScript课程笔记3
  • 电脑安装系统蓝屏的原因
  • 【相机基础知识与物体检测】更新中
  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 应用智能化转型—MCP原理分析
  • dvwa7——SQL Injection
  • MyBatis 的动态 SQL
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • mybatis打印完整的SQL,p6spy
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • SQL思路解析:窗口滑动的应用
  • 剑指offer15_数值的整数次方
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • java反序列化:CC5利用链解析
  • 【Python进阶】装饰器
  • SpringBoot接入Kimi实践记录轻松上手
  • 九(5).引用和指针的区别
  • 基于大模型的短暂性脑缺血发作(TIA)全流程预测与诊疗辅助系统详细技术方案
  • UVa12298 Super Joker II
  • 手摸手还原vue3中reactive的get陷阱以及receiver的作用
  • 使用 C++/OpenCV 制作跳动的爱心动画
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题