Java框架myBatis(三)

news2024/11/15 20:41:56

 一、特殊符号转义

特殊符号处理 在mybatis中的xml文件中,存在一些特殊的符号,比如:、"、&、<> 等,正常书写mybatis会报错,需要对这些符号进行转义。

具体转义如下所示: 特殊字符 转义字符

除了可以使用上述转义字符外,还可以使用来包裹特殊字符。如 下所示:

        <!CDATA[       ]>是XML语法。在CDATA内部的所有内容都会被解析器忽略。 但是有个问题那就是<if>、<where>、<choose>等这些标签都不会被解析,所以 我们只把有特殊字符的语句放在<!CDATA[       ]>尽量缩小 的范围。

二、myBatis缓存

1、缓存

        缓存:数据缓存,让数据离我们执行程序更近,  让程序可以快速的获取到数据

        手机缓存、浏览器缓存、cpu缓存等

        当访问量过大时,会将数据库中的数据先存入缓存(第一次查询后先不销毁,保存在java对象中,相对时间再进行销毁 ),对数据库进行保护,减少访问量过大

 存入缓存一般有两大极端:一种是短期时间内访问量极大、一种是修改可能性极小 

        查询流程:先从缓存中查数据,缓存中如果没有则从数据库查询,数据库查询后把数据存入缓存,下次直接从缓存中获取、

2、  myBatis一级缓存      

        默认是SqlSession级别的,在同一个SqlSession中查询的数据存入SqlSession对象中 .第二次查询数据时,先从sqlSession对象中查询,如果有则直接返回,如果没有再连接数据库

        一级缓存生命周期:开始于sqlSession对象,结束语sqlSession对象关闭。如果在此期间执行了新增修改删除,也会清空sqlSession对象中的缓存数据。调用sqlSession中的clearCache()方法也会强制清空一级缓存数据

@Select("select id,name,gender from teacher where id = #{id}")
    Teacher findTeacherById(Integer id);
@Test
    public void test4(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        TeacherDao teacherDao = sqlSession.getMapper(TeacherDao.class);
        Teacher teacher = teacherDao.findTeacherById(4);
        Teacher teacher1 = teacherDao.findTeacherById(4);
        System.out.println(teacher);
        System.out.println(teacher1);
        sqlSession.commit();
        sqlSession.close();
    }

 两个结果

 

只执行了一次 

 

3、  myBatis二级缓存

二级缓存是SqlSessionFactory级别的,多个SqlSession共享的,其作用域是同一个namespace。不同的 sqlSession 两次执行相同namespace下的sql语句且向sql中传递参数也相同 即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存 (内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。

Mybatis 默认没有开启二级缓存需要配置开启二级缓存。

配置开启二级缓存需要三步:

1、启用二级缓存

在SqlMapperConfig.xml 中启用二级缓存,如下代码所示,当 cacheEnabled 设置为true时启用二级缓存,设置为false时禁用二级缓存。

<setting name="cacheEnabled" value="true"/>

2、对象序列化 

将所有的POJO类实现序列化接口Java.io.Serializable

3、配置映射文件 

在Mapper映射文件中添加<cache>标签,表示此mapper开启二级缓存。 当SqlSeesion 关闭时,会将数据存入到二级缓存  属性flushInterval可以设置销毁时间,毫秒为单位 。cache可以设置其他属性,包括是否只读,销毁策略等,详情请见API

,详情请见API

 mybatis – MyBatis 3 | XML 映射器

只查询了一次

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

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

相关文章

图解 Elasticsearch 的 Fielddata Cache 使用与优化

1、难搞的 fielddata cache 在 ES 使用的几个内存缓存中&#xff0c;fielddata cache 算是一个让人头疼的家伙。 作为和 query cache 和 request cache 一样不受 GC 控制的内存使用者&#xff0c;fielddata cache 虽然也有 indices.fielddata.cache.size 的设置来阻止过度使用&…

vite-plugin-ejs:打包时报错:hook is not a function

现象&#xff1a;打包时提示hook is not a function 解决方法1&#xff1a; 在node_modules中找到vite-plugin-ejs的index.js&#xff0c;将handler修改为transform&#xff1a; 解决方法2&#xff1a; 使用vite --version命令查看本机的vite版本&#xff0c;根据插件的写法选…

WMS仓储管理系统的这些功能模块一定要做好

在当今物流行业迅猛发展的背景下&#xff0c;仓储管理的智能化升级已成为企业提升竞争力的关键一环。智能立体仓库系统的构建&#xff0c;正是这一趋势下的重要里程碑&#xff0c;它以高度自动化、精准化的货物处理能力&#xff0c;重新定义了仓储作业的标准。而这一切的核心驱…

CAD波浪线画法2

cad波浪线怎么画出来 - 软件自学网下面给大家介绍的是cad波浪线怎么画出来的方法&#xff0c;具体操作步骤如下&#xff1a;https://rjzxw.com/jiaocheng/18774.html这个是对的&#xff0c;适合多个版本

网络安全系统性学习路线「全文字详细介绍」

&#x1f91f; 基于入门网络安全打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 一、基础与准备 网络安全行业与法规 想要从事网络安全行业&#xff0c;必然要先对行业建立一个整体的认知&#xff0c;了解网络安全对于国家和社会的作用&#xff0…

C++学习笔记——最大的数

一、题目描述 二、代码 #include <iostream> using namespace std; double bijiao(double ca,double cb,double cc) {double* t &ca;if(*t < cb) t&cb;if(*t < cc) t&cc;return *t; } int main() {double a,b,c; cin >> a >> b >>…

聚鼎科技:新人开一家装饰画店铺怎么快速起店

在当下这个看重审美和个性表达的时代&#xff0c;开设一家装饰画店铺无疑是迎合市场的明智选择。对于新人来说&#xff0c;快速且有效地启动一家装饰画店铺并非易事&#xff0c;但通过遵循一些关键步骤&#xff0c;可以大大缩短起步时间并提高成功率。 进行市场调研&#xff0c…

[Meachines] [Medium] Bastard Drupal 7 Module Services-RCE+MS15-051权限提升

信息收集 IP AddressOpening Ports10.10.10.9TCP:80,135,49154 $ nmap -p- 10.10.10.9 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 7.5 | http-methods: |_ Potentially risky methods: TRACE | http-robots.…

如何轻松合并 PDF 文件

管理和组织电子文件是个人和专业人士的一项重要技能。组合 PDF 文件是一项常见任务&#xff0c;可以帮助增强您的工作流程&#xff0c;从而更好地共享信息、协作项目和维护整洁的数字工作流程。在这篇博文中&#xff0c;我们将探讨如何在笔记本电脑或计算机上轻松合并 PDF 文件…

异步任务的艺术:Bull应用详解

Bull 是一个强大的 Node.js 库&#xff0c;它基于 Redis 构建&#xff0c;为异步任务队列提供了简单而强大的解决方案。 它支持多种任务处理模式&#xff0c;包括延迟任务、重复任务和优先级队列&#xff0c;使得发送电子邮件、生成报告或处理图像等耗时操作变得轻而易举。Bull…

书生.浦江大模型实战训练营——(十四)MindSearch 快速部署

最近在学习书生.浦江大模型实战训练营&#xff0c;所有课程都免费&#xff0c;以关卡的形式学习&#xff0c;也比较有意思&#xff0c;提供免费的算力实战&#xff0c;真的很不错&#xff08;无广&#xff09;&#xff01;欢迎大家一起学习&#xff0c;打开LLM探索大门&#xf…

达梦数据库兼容Quartz定时框架

1、背景 近期项目中需要使用达梦数据库&#xff0c;现将mysql数据库切换为达梦数据库&#xff0c;其中兼容Quartz定时框架报错如下&#xff1a; 2、解决方案 2.1 起初配置完&#xff1a;达梦数据库驱动直接启动项目直接报错&#xff0c; 后面在yml中配置数据库表名前缀&…

rac集群二几点重启ora.gipcd不能正常启动

集群起来后gipcd服务不能正常启动 检查gipcd日志&#xff1a; 2024-08-26 00:29:50.745: [GIPCXCPT][2] gipcPostF [gipcd_ExitCB : gipcd.c : 431]: EXCEPTION[ ret gipcretInvalidObject (3) ] failed to post obj 0000000000000000, flags 0x0 2024-08-26 00:29:50.745: […

企业培训APP开发指南:基于在线教育系统源码的实践

当下&#xff0c;基于在线教育系统源码开发企业培训APP成为了许多企业提高员工技能、优化培训流程的首选方案。 一、为什么选择基于在线教育系统源码开发企业培训APP&#xff1f; 1.定制化需求&#xff1a;每个企业的培训需求和目标都不尽相同&#xff0c;基于现有的在线教育…

一键安装最流畅的Win7系统家庭版!附详细安装教程

今日系统之家小编给大家带来运作最流畅的Win7系统家庭版&#xff0c;该版本系统经过精心优化&#xff0c;系统资源占用更少&#xff0c;运作变得更流畅。系统支持不同的安装方式&#xff0c;推荐用户使用硬盘一键安装方式&#xff0c;安装起来更简单&#xff0c;非常适合新手用…

汇川技术|Inoproshop软件菜单[工具、窗口、帮助]

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 其实对软件的学习就是看帮助加应用&#xff0c;根据帮助了解都有哪些功能&#xff0c;然后在应用中熟悉这些功能&#xff0c;随着应用的熟练&#xff0c;逐步总结出提升效率的技巧方法&#xff0c;从而逐步达到精通的…

探索 Go 语言中的数组和切片:深入理解顺序集合

在 Go 语言的丰富数据类型中&#xff0c;数组和切片是处理有序数据集合的强大工具&#xff0c;它们允许开发者以连续的内存块来存储和管理相同类型的多个元素。无论是在处理大量数据时的性能优化&#xff0c;还是在实现算法时对数据结构的需求&#xff0c;数组和切片都扮演着至…

无线领夹麦克风六大行业趋势揭秘:洞察市场风向谨防踩坑!

​近年来&#xff0c;无线领夹麦克风受到很多直播达人、视频创作者的推荐与青睐&#xff0c;作为一款实用便捷的音频设备&#xff0c;各个创作领域都广泛应用。如今无线领夹麦克风市场产品多样且品质各异&#xff0c;有些产品采用劣质材料&#xff0c;甚至存在信号不稳定等问题…

IP代理怎么测试网速:全面指南

在互联网时代&#xff0c;代理IP已经成为了很多人上网的重要工具。不管你是为了保护隐私&#xff0c;还是为了提高访问速度&#xff0c;代理IP都能提供很大的帮助。那么&#xff0c;如何测试代理IP的网速呢&#xff1f;今天我们就来聊聊这个话题。 什么是代理IP&#xff1f; 代…

SQL进阶技巧:如何按任意时段分析时间区间问题? | 分区间讨论【左、中、右】

目录 0 场景描述 1 数据准备 2 问题分析 方法1:分情况讨论,找出重叠区间 方法2:暴力美学法。按区间展开成日期明细表 3 拓展案例 4小结 0 场景描述 现有用户还款计划表 user_repayment ,该表内的一条数据,表示用户在指定日期区间内 [date_start, date_end] ,每天…