八股文(Mybatis)

news2025/1/22 21:43:06

文章目录

  • 1. Mybatis缓存机制
  • 2. 动态SQL语句
  • 3. 分页
    • 3. 1 几种分页方式
    • 3.2 MyBatis 是如何进行分页的?分页插件的原理是什么?
    • 3.3 逻辑分页和物理分页

1. Mybatis缓存机制

在这里插入图片描述
作用:避免每次都去查db
一级缓存是SqlSession级别的缓存,也叫本地缓存。
跨SqlSession级别的,引入了二级缓存(全局缓存)。
先通过CachingExecutor查二级缓存

2. 动态SQL语句

  • MyBatis 动态 SQL 可以让我们在 XML 映射文件内,以标签的形式编写动态 SQL,完成逻辑判断和动态拼接 SQL 的功能;
  • MyBatis 提供了 9 种动态 SQL标签:trim、where、set、foreach、if、choose、when、otherwise、bind
  • 执行原理:使用 OGNL 从 SQL 参数对象中计算表达式的值,根据表达式的值动态拼接 SQL,以此来完成动态 SQL 的功能。

3. 分页

3. 1 几种分页方式

数组分页
SQL 分页
拦截器分页
RowBounds 分页

3.2 MyBatis 是如何进行分页的?分页插件的原理是什么?

MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。可以在 SQL 内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。

分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,根据 dialect 方言,添加对应的物理分页语句和物理分页参数

3.3 逻辑分页和物理分页

  • 物理分页
    物理分页就是数据库本身提供了分页方式,如MySQL的limit,oracle的rownum ,好处是效率高,不好的地方就是不同数据库有不同的搞法。
  • 逻辑分页
    逻辑分页利用游标分页,好处是所有数据库都统一,坏处就是效率低。
    逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据。这样做弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。 物理分页是从数据库查询指定条数的数据,弥补了一次性全部查出的所有数据的种种缺点,比如需要大量的内存,对数据库查询压力较大等问题。

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

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

相关文章

Mysql统计分组后每组数据与每组数量区别

下边统计的是分组后每组的数量:结果是多个 select p.id (count(*)) from p group by p.id 如果想统计分组后,有多个分组,需要如下执行: select count(*) from (select p.id (count(*)) from p group by p.id) as a 此外&#xf…

大数据之Hadoop数据仓库Hive

目录: 一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive 常用DML操作七、查询结果插入到表八、更新和删除操作待完善。。。 一、简介 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表&#xff0c…

【Linux】线程-线程安全之互斥

操作系统核心数centos 3.10.032位单核 线程之线程安全 线程不安全的现象互斥死锁线程饥饿 线程不安全的现象 进程线程的背景概念: 临界资源:多线程执行流之间共享的资源 临界区:每个线程内部,访问临界资源的代码 互斥&#xff1a…

设计模式——责任链

目录 1、传统方案,OA系统的采购审批项目 2、职责链模式基本介绍 3、职责链模式解决 OA 系统采购审批项目 4、职责链模式在 SpringMVC 框架应用的源码分析 责任链模式类似一个链表,每个具体处理人层层判断对请求的处理权限,没权限的话把请…

基于C++/CLI实现C#调用C++类对象过程中的注意事项

目录 一、基于C/CLI 的调用原理二、注意事项如何基于VS2010完成上述一系列开发过程1、生成C应用程序(非托管代码)2、基于C/CLI生成托管代码3、C#调用 三、C/CLI与COM组件对比 一、基于C/CLI 的调用原理 C/CLI (Common Language Infrastructu…

阿里P7晒出工资单:狠补了这个,真香...

据阿里HR部门发布的最新信息,2023年招聘岗位数将扩招3000+。但就2022年就业形势来看,大厂缩招裁员导致优质岗位竞争变得更加激烈,2023开年以来,也有不少大厂纷纷传来裁员的消息!除了对面试者技术的要求变高…

Netty BIO/NIO/AIO介绍

概念介绍 1、 BIO(blocking I/O):同步阻塞IO,也即是传统的I/O。 2、 NIO (non-blocking IO): 也即是New I/O,使用它可以提供非阻塞式的高伸缩性网络。 3、AIO 即 NIO2.0, 叫做异步不阻塞的 IO。 AIO 引入异步通道的概念, 采用了 Proactor 模式, 简化了程序编写,有…

零拷贝(Zero-Copy)

一,数据的四次拷贝与四次上下文切换 很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用: File.read(file, buf, len);Socket.send(socket, buf, len); 例如消息中间件 Kafka 就是这个应用场景,从磁盘中读取一批消息…

kafka介绍

1.kafka是什么 Kafka是一种高性能、可扩展、容错的分布式流处理平台,广泛应用于日志收集、实时数据处理、消息传递等场景所开发的一个消息队列中间件 2.kafka的优势 Kafka的优势在于其高吞吐量、可扩展性、容错性以及灵活的数据保留策略。它的高吞吐量是因为Kafk…

十一、Node.js

一、Node.js是什么? 在了解Node.js之前,我们先去了解一下什么叫v8引擎。这里参考一下其他博主的资料。 聊聊V8引擎_努力学习前端的77的博客-CSDN博客 这个时候我们再去看下Node.js的定义。 官方对Node.js的定义: Node.js是一个基于V8 Ja…

mysql优化-减少查询回表次数和回表数据量

减少数据回表常见的三种方式分别是1)查询条件使用聚集索引;2)使用索引下推;3)使用索引覆盖。 1 查询条件使用聚集索引-避免回表查询 按照索引使用数据结构B树叶子结点是否包含表中全部字段,mysql 索引可以…

“数字中国·福启海丝”多屏互动光影艺术秀27日在福州举办

作为深化“数字海丝”的核心区、海上丝绸之路的枢纽城市,为喜迎第六届数字中国建设峰会盛大召开之际,福州市人民政府特此举办“数字中国福启海丝”多屏互动光影秀活动。本次光影秀活动是由福建省文化和旅游厅指导,福州市人民政府主办&#xf…

USB转串口芯片CH9101U

CH9101是一个USB总线的转接芯片,实现USB转异步串口。提供了常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直接升级到USB总线。 特点 全速USB设备接口,兼容USB V2.0。内置固件,仿真标准串…

CH9121网络串口透传应用

概述 随着物联网技术的普及,越来越多的传统设备出现联网功能需求。串口作为使用较为广泛的一种通信接口,串口转以太网,进行远程数据传输需求逐渐显现出来。CH9121内部集成TCP/IP协议栈,无需编程,即可轻松实现网络数据…

撰写项目文档: 节省时间的技巧和模板

高质量的项目文档具有长期价值。它不仅有助于确保项目的成功,而且还可以作为未来项目和计划的参考! 项目文档是任何项目的脉搏,它连接了成功运行项目所需的一切。 文档必须足够宽泛,以便开发能够取得进展。但要足够灵活&#xf…

DAB-Deformable-DETR源码学习记录之模型构建(二)

书接上回,上篇博客中我们学习到了Encoder模块,接下来我们来学习Decoder模块其代码是如何实现的。 其实Deformable-DETR最大的创新在于其提出了可变形注意力模型以及多尺度融合模块: 其主要表现在Backbone模块以及self-attention核cross-atten…

平台+AI:全面拥抱大模型的商业创新,打造企业数字化「柔性供应链」 | D3演讲实录

马斯克曾说:“高生产率解决诸多问题。” 在社会化内卷的大环境下,借助数智化“降本增效”已是不争事实。AI技术日新月异、大量信息繁杂涌现,无数原来烟囱式的模式亟需变革,平台与AI之间怎样融合,才能发挥更大的功效&a…

深度学习量化总结(PTQ、QAT)

背景 目前神经网络在许多前沿领域的应用取得了较大进展,但经常会带来很高的计算成本,对内存带宽和算力要求高。另外降低神经网络的功率和时延在现代网络集成到边缘设备时也极其关键,在这些场景中模型推理具有严格的功率和计算要求。神经网络…

如何减少项目在Corona和V-Ray中的3ds Max渲染时间?

相信在大多 3D 项目里,渲染是最耗费时间的部分,它不仅是建模和纹理化 3D 场景的过程,而是需要利用硬件来完成任务。我们在配备独立GPU和带有2到4个强大内核的CPU的中档计算机上,可以将3ds Max中创建和处理的项目轻松渲染完成&…

MATLAB实现车牌识别

车牌识别主要包括三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。 本项目通过对拍摄的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程来进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌…