版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务2.4配置resultMap自动映射级别和MyBatis缓存机制了解MyBatis的3种自动映射级别类型以及自动映射级别的配置方法;理解一级缓存、二级缓存的定义及原理;会启动一级缓存和二级缓存。1本节任务
resultMap自动映射级别result自动映射级别的类型及适用场景MyBatis提供了3种自动映射级别类型,其可在核心配置文件mybatis-config.xml的<settings>标签中通过autoMappingBehavior设置项进行配置。NONE:禁用自动映射,只有在<resultMap>中明确指定的映射才会生效。适用于希望对映射关系进行精确控制,但不想依赖自动映射的场景。PARTIAL:默认的自动映射级别,会自动映射除嵌套结果映射(也就是含有<association>或<collection>标签)之外的结果集。在大多数情况下,默认使用PARTIAL自动映射级别就足够了。FULL:会自动映射所有结果集,包含嵌套结果映射。
适用于当数据库表的字段名和Java对象的属性名基本一致,且结果集包含嵌套结构时,可以使用FULL自动映射级别,减少手动配置的工作量。2知识支撑自动映射级别的配置方法在MyBatis核心配置文件mybatis-config.xml里,使用<settings>标签来配置自动映射的级别。示例代码如下。2知识支撑1<configuration>2<settings>3<!--设置自动映射级别为FULL-->4 <settingname="autoMappingBehavior"value="FULL"/>5</settings>6 <!--其他配置-->7</configuration>如果使用Java代码配置MyBatis,那么也可以通过Configuration对象来设置自动映射级别。示例代码如下。1Configurationconfiguration=newConfiguration();2//设置自动映射级别为FULL3configuration.setAutoMappingBehavior(4 org.apache.ibatis.session.AutoMappingBehavior.FULL);5//其他配置6…MyBatis缓存机制:MyBatis提供了两级缓存机制,分别是一级缓存和二级缓存,合理使用缓存可以显著提升数据库操作的性能,减少对数据库的访问次数。
一级缓存
:一级缓存又称本地缓存,可以理解为SqlSession的缓存。换句话说,在同一个SqlSession里执行相同的查询操作时,MyBatis会优先从一级缓存中查找结果。若一级缓存中存在所需的数据,就直接返回该数据,而不会再次执行数据库查询。
原理:当开启一个SqlSession后,MyBatis会为这个SqlSession创建一个缓存区域。在执行查询操作时,MyBatis会把查询的SQL语句及相应的参数作为键,查询结果作为值,存放到这个缓存区域中。如果之后在同一个SqlSession里执行相同的查询操作(SQL语句和参数都相同),那么MyBatis会先检查缓存中是否有对应的结果。如果有,就直接使用缓存中的结果;如果没有,才会去数据库中执行查询,并把查询结果存入缓存。示例代码如下。运行后结果如图2.4.1所示。
2知识支撑2知识支撑1SqlSessionsqlSession=MyBatisUtils.getSqlSession();2//第一次:执行查询操作3Studentstudent=(Student)sqlSession.selectOne("findStudentBySno",2);4//第二次:执行查询操作5Studentstudent1=(Student)sqlSession.selectOne("findStudentBySno",2);6//此处省略提交事务、释放资源代码7...8System.out.println("第一次查询结果:"+student);9System.out.println("第二次查询结果:"+student1);10System.out.println(student==student1?11"两次的查询结果是同一对象":"两次的查询结果不是同一对象");缓存失效的情况SqlSession关闭:当SqlSession关闭时,它所对应的一级缓存也会被清空。执行增删改操作:在同一个SqlSession中执行插入、更新或删除操作后,为了保证数据的一致性,MyBatis会清空一级缓存。图2.4.1
开启一级缓存调用后的执行结果MyBatis缓存机制:MyBatis提供了两级缓存机制,分别是一级缓存和二级缓存,合理使用缓存可以显著提升数据库操作的性能,减少对数据库的访问次数。
二级缓存
:二级缓存是Mapper级别(namespace级别)的缓存,其可以在多个SqlSession之间共享数据。这意味着,不同的SqlSession只要操作的是同一个Mapper中的查询语句,就可以共享二级缓存中的数据。
配置步骤:全局开启二级缓存:在MyBatis核心配置文件mybatis-config.xml中,设置<settings>元素里的cacheEnabled属性为true。示例代码如下。
2知识支撑1<settings>2<settingname="cacheEnabled"value="true"/>3</settings>在Mapper文件中开启二级缓存:虽然上述配置会启用MyBatis的二级缓存功能,但仍需要单独开启每个Mapper,因此在对应的Mapper.xml文件中添加<cache>标签及其中的内容。示例代码如下。
2知识支撑1<mappernamespace="com.example.mapper.UserMapper">2<!--开启二级缓存-->3<cacheeviction="LRU"flushInterval="60000"size="512"readOnly="true"/>4<!--SQL语句-->5 …6</mapper>在Dao接口实现类中调用并测试运行。运行结果如图2.4.2所示。图2.4.2
开启二级缓存调用后的执行结果
第一是resultMap的自动映射级别,包括NONE(禁用自动映射)、PARTIAL(默认,不映射嵌套结果)、FULL(全量映射,包括嵌套结果)三种级别,以及XML和Java代码两种配置方式。
第二是MyBatis的两级缓存,一级缓存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GEO优化服务收费标准深度解析
- 哈尔滨工程大学松北校区(第二十三、二十四学生公寓、学生食堂、远航大学生活动中心、材化与公共分析测试楼、综合教学楼、一期基础设施工程)建设项目水土保持方案报告表
- 2026爱民爱明面试题及答案
- 第10章 会计风险的计量与控制
- Module 6 Unit 2 It was amazing(教学设计)外研版(一起)英语五年级下册
- 第四单元 神州音韵(四)-选听 乌夏克木卡姆 教学设计-2023--2024学年人教版初中音乐八年级下册
- 2025-2026学年珍珠鸟教学设计余琴
- 2025-2026学年郑州教学家具设计
- 第14课 制作熊猫文创产品教学设计小学劳动四年级下册川民版《劳动教育》
- 表格教学设计中职专业课-AutoCAD-数控技术应用-装备制造大类
- 2025江苏苏州市城投集团第一批次招聘16人笔试历年参考题库附带答案详解
- 2026年绍兴市社区工作者(专职网格员)招聘考试试卷1含答案解析
- 2026年纪检监察考试题库(附参考答案)
- 第22课 《太空一日》课件(内嵌视频 ) 2025-2026学年统编版语文七年级下册
- GB/T 21186-2026傅立叶变换红外光谱仪
- 2025年事业单位预防医学岗《公卫知识》真题及答案解析
- 2025年度中国展览数据统计报告
- (完整版)企业商业秘密管理体系及保密措施
- 福建省特安安全技术服务中心有限公司招聘笔试题库2026
- 2026年高考(湖南卷)英语试题及答案
- 【期末】《国家安全概论》(西安交通大学)期末考试慕课答案
评论
0/150
提交评论