mybatis热点面试题第五弹
1. MyBatis与Hibernate的区别
答案:
- MyBatis:
- 不完全是一个ORM框架,需要手动编写SQL语句,灵活性高,适合对数据库操作有高性能要求的场景。
- 缺点是无法做到数据库无关性,如果需要支持多种数据库,需要编写多套SQL映射文件。
- Hibernate:
- 是一个完整的ORM框架,对象关系映射能力强,数据库无关性好,适合关系模型复杂且对ORM要求高的场景。
- 缺点是性能可能不如MyBatis,且对SQL的控制不够灵活。
2. 如何解决MyBatis的N+1查询问题?
答案:
- N+1查询问题:在关联查询中,主查询执行一次,每条结果再触发一次关联查询,导致性能问题。
- 解决方案:
- 使用联合查询:通过
JOIN语句一次性查询所有关联数据。<select id="selectArticles" resultMap="ArticleResult">SELECT a.*, u.*FROM article aLEFT JOIN user u ON a.author_id = u.id </select> - 使用嵌套查询:在
<resultMap>中配置<collection>或<association>,并指定select属性。
- 使用联合查询:通过
3. MyBatis的动态SQL支持方式有哪些?
答案:
- XML配置方式:通过
<if>、<choose>、<when>等标签动态拼接SQL。 - 注解方式:使用
@SelectProvider、@InsertProvider等注解,结合SqlSession动态生成SQL。 #{}和${}的区别:#{}:预编译占位符,防止SQL注入。${}:字符串替换,可能导致SQL注入。
4. MyBatis的缓存机制有哪些?
答案:
- 一级缓存:基于
PerpetualCache的HashMap本地缓存,作用域为SqlSession,默认开启。 - 二级缓存:作用域为
Mapper(Namespace),默认不开启,需要在Mapper文件中配置。<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> - 缓存更新机制:当执行C/U/D操作后,一级缓存和二级缓存中的相关数据会被清空。
5. 如何优化MyBatis的性能?
答案:
- SQL优化:优化SQL语句,减少不必要的查询和更新。
- 缓存机制:合理使用一级缓存和二级缓存,减少数据库访问。
- 批量操作:使用
ExecutorType.BATCH模式,减少事务提交次数。try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {for (User user : users) {userMapper.insert(user);}sqlSession.commit(); } - 分页插件:使用
PageHelper等分页插件,减少数据加载量。
相关文章:
mybatis热点面试题第五弹
1. MyBatis与Hibernate的区别 答案: MyBatis: 不完全是一个ORM框架,需要手动编写SQL语句,灵活性高,适合对数据库操作有高性能要求的场景。缺点是无法做到数据库无关性,如果需要支持多种数据库,…...
c++头文件和命名空间
在 C 中,头文件和命名空间是两个重要的概念,它们分别用于代码组织和作用域管理。 一、头文件(Header Files) 1. 作用 声明接口:存放函数、类、变量的声明(而非定义)。代码复用:通…...
命令行参数和环境变量 ─── linux第13课
目录 命令行参数 命令行参数列表: 如何实现命令行参数传递到此进程 环境变量 基本概念 常见环境变量 查看环境变量方法 编辑 环境变量如何写入 总结: 测试PATH 命令行参数 同一个程序,可以根据命令行参数的不同,表现不同功能 比如:指令中的选项的实现. ls -al…...
基于 openEuler 22.09 的 OpenStack Yoga 部署
openEuler 虚拟化环境部署 使用 VMWare Workstation 创建三台 2 CPU、8G内存、100 GB硬盘 的虚拟机 主机 IP 作用 Controller 192.168.184.110 控制节点 Compute 192.168.184.111 计算节点 Storage 192.168.184.112 存储节 一 基础配置 1.1 配置 yum 源 由于 op…...
【Linux实践系列】:用c语言实现一个shell外壳程序
🔥本文专栏:Linux Linux实践项目 🌸博主主页:努力努力再努力wz 那么今天我们就要进入Linux的实践环节,那么我们之前学习了进程控制相关的几个知识点,比如进程的终止以及进程的等待和进程的替换,…...
通俗易懂的分类算法之K近邻详解
通俗易懂的分类算法之K近邻详解 用最通俗的语言和例子,来彻底理解 K近邻(K-Nearest Neighbors,简称 KNN) 这个分类算法。不用担心复杂的数学公式,我会用生活中的例子来解释,保证你一听就懂! 1.…...
NO.19十六届蓝桥杯模拟赛第三期上
1 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? 答:23 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false)…...
基于 Rust 与 GBT32960 规范的编解码层
根据架构设计,实现编解码层的代码设计 Cargo.toml 加入二进制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二进制序列化支持 bytes-utils "0.1" # 添加字节处理工具 开始编码 错误处理(error.rs&#x…...
conda安装及超详细避坑实战
1. Anaconda介绍。 Anaconda是一站式数据科学与机器学习平台,专为开发者、数据分析师设计,并带有python中超过180个科学包及其依赖项。通过 Anaconda,您可以轻松管理数据环境、安装依赖包,快速启动数据分析、机器学习项目。 Anaconda集成了…...
LM studio 加载ollama的模型
1.LM 下载: https://lmstudio.ai/ 2.ollama下载: https://ollama.com/download 3.打开ollama,下载deepseek-r1。 本机设备资源有限,选择7B的,执行ollama run deepseek-r1:7b 4.windows chocolatey下载: P…...
【图论】判断图中有环的两种方法及实现
判断图中有环的两种方法及实现 在图论中,检测有向图是否存在环是常见问题。本文将介绍两种主流方法:DFS三色标记法和拓扑排序(Kahn算法),并提供对应的C代码实现。 方法一:DFS三色标记法 核心思想 通过深…...
深入探索像ChatGPT这样的大语言模型-02-POST training supervised finetuning
参考 【必看珍藏】2月6日,安德烈卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy fineweb知乎翻译介绍 fineweb-v1原始连接 fineweb中文翻译版本 Chinese Fineweb Edu数据集 查看网络的内部结果,可以参…...
Kaldi环境配置与Aishell训练
一、项目来源 代码来源:kaldi-asr/kaldi: kaldi-asr/kaldi is the official location of the Kaldi project. (github.com) 官网文档:Kaldi: The build process (how Kaldi is compiled) (kaldi-asr.org) 踩着我的同门李思成-CSDN博客填上的坑kaldi环境…...
数据集/API 笔记:新加坡PSI(空气污染指数)API
data.gov.sg 数据范围:2016年2月 - 2025年3月 1 获取API方式 curl --request GET \--url https://api-open.data.gov.sg/v2/real-time/api/psi 2 返回数据 API 的数据结构可以分为 3 大部分: 区域元数据(regionMetadata) →…...
【GPU使用】如何在物理机和Docker中指定GPU进行推理和训练
我的机器上有4张H100卡,我现在只想用某一张卡跑程序,该如何设置。 代码里面设置 import os # 记住要写在impot torch前 os.environ[CUDA_VISIBLE_DEVICES] "0, 1"命令行设置 export CUDA_VISIBLE_DEVICES0,2 # Linux 环境 python test.py …...
【Java项目】基于SpringBoot的CSGO赛事管理系统
【Java项目】基于SpringBoot的CSGO赛事管理系统 技术简介:采用SpringBoot框架、Java语言、MySQL数据库等技术实现。 系统简介:CSGO赛事管理系统是一个基于B/S架构的管理系统,主要功能包括前台和后台管理模块。前台系统功能模块分为…...
MIPI接口:(4)MIPI CSI-2协议详解(上)
1. 什么是CSI? CSI(Camera Serial Interface)是MIPI联盟早期制定的摄像头接口标准,主要用于连接摄像头和处理器。 CSI-2是CSI的第二代版本,在原有基础上进行了全面优化: (1)分层架…...
防火墙旁挂组网双机热备负载均衡
一,二层交换网络: 使用MSTPVRRP组网形式 VLAN 2--->SW3为主,SW4 作为备份 VLAN 3--->SW4为主,SW3 作为备份 MSTP 设计 --->SW3 、 4 、 5 运行 实例 1 : VLAN 2 实例 2 : VLAN 3 SW3 是实例 1 的主根,实…...
JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式)
JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式) 一、项目背景 在软件测试过程中,使用 JMeter 进行性能测试和功能测试是常见的操作。本实战项目将详细介绍如何使用 JMeter 自带工具以及 BadBoy 进行脚本录制,并完善脚本以…...
硅基流动nodejs流式输出
使用JavaScript的api直接在前端问答速度虽然快但是有token直接暴露的风险。 现在使用nodejs也可以快速进行流式输出并且可以隐藏用户敏感信息。 const express require(express); const axios require(axios); const app express(); const port 3000;//启动服务node index…...
mysql深度分页优化方案
mysql深度分页优化方案 在MySQL中,深度分页(即查询大量数据中的靠后部分)通常会导致性能问题,尤其是在使用 LIMIT offset, count 时。随着 offset 的增大,MySQL需要扫描更多的行,导致查询变慢。以下是一些优…...
视频教育网站开源系统的部署安装 (roncoo-education)服务器为ubuntu22.04.05
一、说明 前端技术体系:Vue3 Nuxt3 Vite5 Vue-Router Element-Plus Pinia Axios 后端技术体系:Spring Cloud Alibaba2021 MySQL8 Nacos Seata Mybatis Druid redis 后端系统:roncoo-education(核心框架:S…...
中间件专栏之MySQL篇——MySQL缓存策略
本文所说的MySQL缓存策略与前文提到的buffer pool不同,那是MySQL内部自己实现的,本问所讲的缓存策略是使用另一个中间件redis来缓存MySQL中的热点数据。 一、为什么需要MySQL缓存方案 缓存用户定义的热点数据,用户可以直接从缓存中获取热点…...
CSS 日常开发常用属性总结
文章目录 CSS 日常开发常用属性总结一、 常用 CSS 属性1、布局相关(1)display:(2)position:(3)float:(4)clear: 2、尺寸与溢出&#x…...
CF 886A.ACM ICPC(Java实现)
题目分析 输入6个值,判断某三个值的和能够等于另外三个值的和 思路分析 首先判断总和是不是一个偶数,如果不是就“NO”。由于小何同学算法不好,只能使用三层for循环强行判断某三个值是否能等于总和的一半,可以就“YES”。 代码 …...
Spring Boot 自动装配深度解析与实践指南
目录 引言:自动装配如何重塑Java应用开发? 一、自动装配核心机制 1.1 自动装配三大要素 1.2 自动装配流程 二、自定义自动配置实现 2.1 创建自动配置类 2.2 配置属性绑定 2.3 注册自动配置 三、条件注解深度应用 3.1 常用条件注解对比 3.2 自定…...
【windows driver】 开发环境简明安装教程
一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…...
探秘基带算法:从原理到5G时代的通信变革【八】QAM 调制 / 解调
文章目录 2.7 QAM 调制 / 解调2.7.1 概述2.7.2 星座图星座图的结构与性能发射端的信息编码与接收端的解码差分编码的分类与实现差分编码的模4格雷加法器公式16QAM星座图与映射关系 2.7.3 信号表达式正交振幅调制的基本原理与系统分析相位误差对QAM性能的影响多电平正交振幅调制…...
Flink性能指标详解MetricsAnalysis
文章目录 Flink 组成1.JobManager2.TaskManager3.ResourceManager4.Dispatcher5.Client6. Env JobManager MetricsTaskManager Metrics Flink 组成 1.JobManager 管理任务 作业调度:负责接收和调度作业,分配任务到 TaskManager。资源管理:…...
Git强制覆盖分支:将任意分支完全恢复为main分支内容
Git强制覆盖分支:将任意分支完全恢复为main分支内容 场景背景完整操作步骤一、前置准备二、操作流程步骤 1:更新本地 main 分支步骤 2:强制重置目标分支步骤 3:强制推送至远程仓库 三、操作示意图 关键风险提示(必读&a…...
