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

MyBatis的部分知识点

一、resultMap的constructor配置方式
     <resultMap id="" type="">
        <constructor>
            <!--主键-->
            <idArg column="id" javaType="_int"/>
            <!--其他列-->
            <arg column="" javaType=""/>
        </constructor>
    </resultMap>

二、MyBatis使用注解配置SQL
@Select
@Insert/@Options
@Update
@Delete
如果需要使用复杂的动态SQL,建议使用XML方式;
如果是简单的SQL,可以考虑使用注解


三、MyBatis缓存
对于一些我们经常查询的并且不经常改变的数据,如果每次查询都要与数据库进行交互,那么大大降低了效率,因为我们使用缓存,将一些对结果影响不大且经常查询的数据存放在内存中,从而减少与数据库的交互来提高效率,这就是缓存的优势。


(一)、MyBatis缓存的分类
1. 一级缓存:同一个SqlSession对象, 在参数和 SQL 完全一样的情况下, 只执行一次 SQL 语句(前提缓存没有过期)
2. 二级缓存:Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,同一个SQLSessionFactory创建的多个SqlSession共享。


(二)、一级缓存
1、同一个SqlSession的情况  
    在参数和 SQL 完全一样的情况下,只执行一次 SQL 语句
2、不同的SqlSession的情况
    不使用缓存
    
3、清空缓存
    刷新缓存是清空这个SqlSession的所有缓存, 不单单是某个键
    Java代码方式:sqlSession.clearCache();
    xml方式 flushCache="true"
4、小结:
    ①. 同一个SqlSession中, Mybatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和结果存放在一个 Map 中, 如果后续的键值一样, 则直接从 Map 中获取数据;
    ②. 不同的SqlSession之间的一级缓存是相互隔离的;
    ③. 用一个 SqlSession, 可以通过代码或XML配置在查询前清空缓存;
    ④. insert、update、delete 语句会清空缓存。
    
    
(三)、二级缓存
二级缓存指的是 mybatis中SqlSessionFactory对象的缓存 ,由同一个SqlSessionFactory对象 创建的SqlSession共享缓存。

1、开启
    ①、在配置文件 mybatis-conf.xml中配置,让mybatis支持二级缓存。 新版本中已经默认为true,可以不用设置。
        <!--设置-->
        <settings>
            <!--开启二级缓存-->
            <setting name="cacheEnabled" value="true"/>
        </settings>

    ②、在映射配置文件Mapper.xml中 开启支持二级缓存
        <!--开启支持二级缓存-->
        <cache/>

    ③、操作支持二级缓存,在select标签 加上useCache="true"
    
    
MyBatis结果来源顺序: 一级缓存 -> 二级缓存(如果开启) —> 数据库

相关文章:

MyBatis的部分知识点

一、resultMap的constructor配置方式 <resultMap id"" type""> <constructor> <!--主键--> <idArg column"id" javaType"_int"/> <!--其他列--> …...

PAT A1089 Insert or Merge

1089 Insert or Merge 分数 25 作者 CHEN, Yue 单位 浙江大学 According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input…...

研发工程师玩转Kubernetes——创建一个测试容器

测试容器并不是什么都没有的容器&#xff0c;只是它没有我们期望的常驻进程。我们常用它来做一些测试。 举个例子&#xff0c;在《研发工程师玩转Kubernetes——自动扩缩容》中我们使用本地wrk进行了压力测试。如果我们希望进入容器手工调用wrk&#xff0c;该怎么做呢&#xff…...

FPGA - 7系列 FPGA内部结构之CLB -03- CLB相关原语以及应用

前言 本文节选UG474的第二章&#xff0c;进行整理翻译。CLB资源被FPGA综合工具自动有效地使用&#xff0c;不需要任何特殊的FPGA专用编码。一些HDL编码建议和技术可以帮助优化设计以获得最大效率。 设计检查清单 这些指南是为有效使用7系列CLB的设计建议提供的快速核对表。7…...

什么是日志关联

什么是日志关联 日志关联是一种分析来自不同源的日志数据以识别事件模式的技术。它用于更好地了解网络的活动&#xff0c;从而有效地保护网络免受漏洞和威胁。 日志关联是日志管理过程的关键部分。收集和存储日志后&#xff0c;集中式日志服务器将执行分析以检测特定事件。日…...

打家劫舍问题 Python题解

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

【JavaSE】Java基础语法(十八):接口

文章目录 1. 接口的概述2. 接口的特点3. 接口的成员特点4. 类和接口的关系5. 抽象类和接口的关系 1. 接口的概述 接口就是一种公共的规范标准&#xff0c;只要符合规范标准&#xff0c;大家都可以通用。Java中接口存在的两个意义 用来定义规范用来做功能的拓展 2. 接口的特点…...

SVD求解两组多维点之间的欧式变换矩阵,及halcon代码实现

之前研究了二维点的仿射变换&#xff0c;用解矩阵的方式求解了两组二维点之间的变换矩阵。 学习了下SVD&#xff0c;看到可以用SVD求解两组多维点之间的欧式变换矩阵&#xff0c;当然也是个最优化问题。 这里的变换只有平移和旋转&#xff0c;没有缩放。 一、先说结论&#…...

常用监控方案 Prometheus + Grafana 简单使用小结

文章目录 前言一、概念1.1 发展1.2 时序数据1.3 Metric 二、Prometheus2.1 架构2.2 配置2.3 查询语言PromQL2.4 Exporter 三、Grafana3.1 数据源3.2 权限3.3 面板可视化3.4 仪表盘 四、实战4.1 监控 Windows/Linux4.2 监控 JVM4.3 监控 MySQL4.4 监控 Springboot API 参考 前言…...

基于长短期神经网络LSTM的飞行轨迹跟踪预测,基于长短期神经网络LSTM的三维路径预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的飞行轨迹跟踪 完整代码: https://download.csdn.net/download/abc991835105/87705046 效果图 结果分析 展望 参考论文 背影 路径追踪预测,对实现自动飞行驾驶拥有重要意义,长短期神经网络是一种改进…...

计算机组成原理-指令系统-指令格式及寻址方式

目录 一、指令的定义 1.1 扩展操作码指令格式 二、指令寻址方式 2.1 顺序寻址 2.2 跳跃寻址 三、 数据寻址 3.1 直接寻址 3.2 间接寻址 3.3 寄存器寻址 ​ 3.4 寄存器间接寻址 3.5 隐含寻址 3.6 立即寻址 3.7 偏移地址 3.7.1 基址寻址 3.7.2 变址寻址 3.7.3 相对寻址…...

【满分】【华为OD机试真题2023B卷 JAVAJS】经典屏保

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 经典屏保 知识点循环迭代编程基础 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹…...

Apache 网页与安全优化

目录 一&#xff1a;Apache网页优化概述 1、概述 2、优化内容 3、gzip介绍 4、Apache的压缩模块 5、mod_ gzip 模块与mod_ deflate 模块 二&#xff1a; 网页压缩 1.检查是否安装 mod_deflate 模块 2. 如果没有安装mod_deflate 模块&#xff0c;重新编译安装 Apache 添…...

Unity的IFilterBuildAssemblies:深入解析与实用案例

Unity IFilterBuildAssemblies Unity IFilterBuildAssemblies是Unity引擎中的一个非常有用的功能&#xff0c;它可以让开发者在构建项目时自定义哪些程序集需要被包含在构建中&#xff0c;哪些程序集需要被排除在建之外。这个功能可以帮助开发者更好地控制项目的构建过程&…...

分片架构,Redis Cluster 分析

分片架构解决的问题 通过堆机器&#xff0c;提升读写性能&#xff0c;与存储性能 分片架构设计要点 分片规则 选择Cardinality大的作为分片键&#xff0c;尽可能保证数据分布均匀 常见分片键&#xff1a; 基于主键&#xff08;业务型数据&#xff09;&#xff0c;基于时间…...

Linux-0.11 文件系统bitmap.c详解

Linux-0.11 文件系统bitmap.c详解 模块简介 该模块包含了两对函数&#xff0c;第一对是和i节点相关的free_inode()和new_inode()。第二对是和逻辑块相关的free_block()和new_block()。 函数详解 free_block void free_block(int dev, int block)该函数的作用是释放设备dev…...

【Linux】基本指令,拥抱Linux的第一步

[Linux]常见指令 Linux基本指令指令的本质ls指令pwd指令cd指令touch指令mkdir指令(重要)rmdir&&rm指令(重要)man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令&#xff08;重要&#xff09;重定向cat指令more指令less指令&#xff08;重要…...

CTF 2015: Search Engine-fastbin_dup_into_stack

参考&#xff1a; [1]https://gsgx.me/posts/9447-ctf-2015-search-engine-writeup/ [2]https://blog.csdn.net/weixin_38419913/article/details/103238963(掌握利用点&#xff0c;省略各种逆向细节) [3]https://bbs.kanxue.com/thread-267876.htm&#xff08;逆向调试详解&am…...

DRF之全局异常处理

一、REST framework 提供了异常处理&#xff0c;我们可以自定义异常处理函数 使用方式&#xff1a; from rest_framewoork.views import exception_handerdef custom_exception_handler(exc,context):# 先调用REST framework默认的异常处理方法获得标准错误响应对象response …...

AI创作工具的使用体验报告

下面是AI创作工具的使用体验报告&#xff0c;围绕以下三点展开&#xff1a; 一、工具的使用体验如何&#xff1f; CSDN博客AI创作工具是一款非常易用的工具&#xff0c;操作简单&#xff0c;可以很快地开始创建内容。在使用过程中&#xff0c;我发现它的语言模型很智能&#…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...