Java面试-框架篇-Mybatis

news2024/9/21 11:08:20

Java面试-框架篇-Mybatis

  • MyBatis执行流程
  • 延迟加载使用及原理
  • 一, 二级缓存
  • 来源

MyBatis执行流程

  1. 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件
  2. 构造会话工厂SqlSessionFactory
  3. 会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)
  4. 操作数据库的接口, Executor执行器, 同时负责查询缓存的维护
  5. Executor接口的执行方法中有一个MappedStatement类型的参数, 封装了映射信息
  6. 输入参数映射
  7. 输出结果映射

在这里插入图片描述

延迟加载使用及原理

  • Mybatis是否支持延迟加载

    • 延迟加载: 需要用到数据时才进行加载, 不需要用到数据时就不加载数据
    • Mybatis支持一对一关联对象和一对多关联集合对象的延迟加载
    • 在Mybatis配置文件中, 可以配置是否启用延迟加载lazyLoadingEnabled=true|false, 默认是关闭的
  • 延迟加载的底层原理

    1. 使用CGLIB创建目标对象的代理对象
    2. 当调用目标方法时, 进入拦截器invoke方法, 发现目标方法是null值, 执行sql查询
    3. 获取数据以后, 调用set方法设置属性值, 再继续查询目标方法, 就有值了

    在这里插入图片描述

一, 二级缓存

  • Mybatis的一级, 二级缓存
    • 一级缓存: 基于PerpetualCache的HashMap本地缓存, 其存储作用域为SqlSession, 当SqlSession进行flush或close之后, 该Session中的所有Cache就将清空, 默认打开一级缓存
    • 二级缓存: 基于namespace和mapper的作用域起作用的, 不是依赖于SqlSession, 默认也是用PerpetualCache, HashMap存储. 需要单独开启, 一个是核心配置开启cacheEnabled, 一个是mapper映射文件添加<cache/>
    • 二级缓存注意事项
      • 二级缓存需要缓存的数据实现Serializable接口
      • 只有会话提交或者关闭以后, 一级缓存中的数据才会转移到二级缓存中
  • Mybatis的二级缓存什么时候会清理缓存中的数据
    • 当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了新增, 修改, 删除操作后, 默认该作用域下所有select的缓存将被clear

来源

黑马程序员. 新版Java面试专题视频教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1245359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Retrofit 原理浅析 二

类型安全的连接 enqueue : 异步 切线程,会在队列中执行 execute : 同步 不切线程 Retrofit:Create 1.验证是否是接口 否则是类或者其他则报错 API Declarations must be interfaces 2.check . add 取出进行处理,然后添加到Colltions 中,如果有父接口则报错,不能是泛型 添加…

【uniapp】部分图标点击事件无反应

比如&#xff1a;点击这个图标在h5都正常&#xff0c;在小程序上无反应 css&#xff1a;也设置z-index&#xff0c;padding 页面上也试过click.native.stop.prevent"changePassword()" 时而可以时而不行&#xff0c; 最后发现是手机里输入键盘的原因&#xff0c;输…

pcie-2-rj45速度优化

背景: 目前用iperf3打流传输速率达不到要求,千兆实际要求跑到800M以上: 优化方案: 1.优化defconfig: 首先编译user版本验证看是否正常 debug版本关闭CONFIG_SLUB_DEBUG_ON宏控。 2.找FAE ,通过更换驱动,或者更新驱动来优化 3.绑定大核: 以8125网卡为例,udp…

【计算机网络笔记】数据链路层概述

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

开启数据库审计(db,extended级别或os级别),并将审计文件存放到/home/oracle/audit下

文章目录 开启数据库审计&#xff08;db,extended级别或os级别&#xff09;&#xff0c;并将审计文件存放到/home/oracle/audit下一. 简介二. 配置2.1. 审计是否安装2.2. 审计表空间迁移2.3. 审计参数2.4. 审计级别2.5. 其他审计选项2.6. 审计相关视图 三. 使用3.1. 开启/关闭审…

【已解决】微信小程序腾讯地图的map清除markers,setData将marker置空后,安卓和ios还会显示上次的内容的问题所在以及解决办法

问题描述 1.我首先点击了这个marker 2.这里可以看到根据id获取到了他的信息 3.当我滑动了地图&#xff0c;这时候重新加载了markers&#xff0c;我再次点击这个marker 4.会发现获取不到数据了 问题原因 个人猜测引起这个问题的原因是id重叠了&#xff0c;导致获取不到数据&am…

【shell】函数和数组的原理及使用注意

目录 一、函数 1.1函数的优点&#xff1a; 1.2如何定义函数&#xff08;shell&#xff09; 1.3 演示函数的作用以及增删改查 关于函数的使用 关于declare查询的用法 关于函数的增加与调用 关于函数的返回值return 关于echo作为返回 关于函数的参数传递 关于函数的环…

前端编码技巧须知

前端开发中可能会使用到以下软件&#xff0c;它们各自具有不同的作用&#xff1a; 代码编辑器&#xff1a;例如Sublime Text、Atom、Visual Studio Code等&#xff0c;用于编写和编辑HTML、CSS和JavaScript等前端代码。网页浏览器&#xff1a;例如Chrome、Firefox、Safari等&a…

【C++】C++入门(下)——有C语言基础的C++学习

C入门&#xff08;下&#xff09; 一、引用1.引用的概念2.引用的定义3.引用特性4.常引用5.使用场景做参数做返回值 6.引用的作用7.引用与指针的区别 二、内联函数1.概念2.特性 三、auto关键字&#xff08;C11&#xff09;1.简介2.auto的使用细则auto与指针和引用结合起来使用在…

python appiumn 自动化测试 入门

资源下载 链接&#xff1a;https://pan.baidu.com/s/1zl1yXYna73RAL-V0PQ9xHA 提取码&#xff1a;syjg 安装JDK 不详细说了 配置Android SDK 新建 ANDROID_HOME配置对应的SDK路径 新增PATH 安装python库 pip install Appium-Python-Client报如图错误的话可以使用 pytho…

搭建FTP

第一步&#xff1a;按【Win R】快捷键打开运行对话框&#xff0c;输入“optionalfeatures”后&#xff0c;按回车键 第二步&#xff1a;从“启用或关闭Windows功能”弹窗中找到Internet Information Services(或者中文版Internet信息服务)并打开&#xff0c;配置IIS并点击确…

单片机语音芯片开发要解决的问题

在单片机语音芯片开发过程中&#xff0c;可能会遇到多种问题&#xff0c;这些问题可能来自于技术层面&#xff0c;也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…

motionlayout的简单使用

MotionLayout 什么是motionLayout&#xff1f; MotionLayout 是 Android 中的一个强大工具&#xff0c;用于创建复杂的布局动画和过渡效果。它是 ConstraintLayout 的一个子类&#xff0c;继承了 ConstraintLayout 的布局功能&#xff0c;同时添加了动画和过渡的支持。Motion…

Java字节码指令集概述及分类详解

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 1、字节码指令集与解析概述 Java字节码对于虚拟机&#xff0c;就好像汇编语言对于计算机&#xff0c;属于基本执行指令。 Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字&#xff08;称为操作码&a…

Redis并发问题解决方案

目录 前言 1.分布式锁 1.基于单个节点 2.基于多个节点 3.watch(乐观锁) 2.原子操作 1.单命令操作 2.Lua 脚本(多命令操作) 3.事务 1.执行步骤 2.错误处理 3.崩溃处理 总结 前言 在多个客户端并发访问Redis的时候&#xff0c;虽然Redis是单线程执行指令&#xff…

Banana Pi [BPi-R3-Mini] 回顾和主线 ImmortalWrt 固件支持

BananaPi BPi-R3 Mini 采用 MediaTek 830&#xff08;4 个 A53&#xff0c;最高 2.0 GHz&#xff09;&#xff0c;具有 2 个 2.5 GbE、AX4200 2.4G/5G 无线和 USB 2.0 端口。它还具有两个 M.2 连接器&#xff0c;可用于 NVMe SSD 和 5G 模块&#xff08;板上包含 Nano SIM 插槽…

绝地求生:PGC 2023 赛事直播期间最高可获:2000万G-Coins,你还不来吗?

今年PGC直播期间将有最高2000万G-Coin掉落&#xff0c;究竟花落谁家咱们拭目以待 公告原文&#xff1a;Watch PGC 2023 Live And Earn G-Coins! 如何赚取高额G-Coin&#xff1f; Throughout the PGC 2023, an astounding 20,000,000 G-Coins will be up for grabs as part of …

常见树种(贵州省):013桉树、米槠、栲类

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、桉树 …

京东数据分析(京东大数据):2023年10月京东手机行业品牌销售排行榜

鲸参谋监测的京东平台10月份手机市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;今年10月份&#xff0c;京东平台手机行业的销量约340万&#xff0c;环比增长约11%&#xff0c;同比则下滑约2%&#xff1b;销售额为108亿&#xff0c;环比增长约17%&#x…

c#数据库:vs2022 加入mysql数据源

网上有VS2019连接MySQL数据库的&#xff0c;那么VS2022&#xff0c;VS2023如果和连接到mysql数据库呢&#xff0c;这里总结一下我的经历&#xff1a; 1、首先下载ODBC驱动安装包 当前下载地址&#xff1a;https://dev.mysql.com/downloads/connector/odbc/ 2、ODBC安装 下载完…