当前位置: 首页 > 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接口;

相关文章:

  • 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_数值的整数次方
  • 网站在哪设置关键词/友情链接交易购买
  • 微信服务号可以做万网站么/深圳seo公司助力网络营销飞跃
  • 看网站是不是WP做的/口碑营销的概念是什么
  • 电商网站建设策划方案/西安网站关键词推广
  • 郑州网站建设及托管/全国疫情最新名单
  • 网站上的动图axure怎么做/深圳外贸网络推广渠道