`

myBatis3之SQL映射的XML文件(缓存)

 
阅读更多

myBatis3之SQL映射的XML文件(缓存)

----------

 

MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行:

<cache/> 

字面上看就是这样。这个简单语句的效果如下: 

1.映射语句文件中的所有select语句将会被缓存。 

2.映射语句文件中的所有insert,update和delete语句会刷新缓存。 

3.缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回。 

4.根据时间表(比如 no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新。 

5.缓存会存储列表集合或对象(无论查询方法返回什么)的1024个引用。 

6.缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。 

 

所有的这些属性都可以通过缓存元素的属性来修改。比如:

<cache 
	eviction="FIFO" 
	flushInterval="60000" 
	size="512" 
	readOnly="true"/> 

这个更高级的配置创建了一个FIFO缓存,并每隔60秒刷新,存储结果对象或列表的512个引用,而且返回的对象被认为是只读的,因此在不同线程中的调用者之间修改它们会导致冲突。  

 

可用的收回策略(eviction)有: 

LRU –  最近最少使用的:移除最长时间不被使用的对象。 

FIFO –  先进先出:按对象进入缓存的顺序来移除它们。 

SOFT –  软引用:移除基于垃圾回收器状态和软引用规则的对象。 

WEAK –  弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。 

默认的是 LRU

 

flushInterval(刷新间隔)可以被设置为任意的正整数,而且它们代表一个合理的毫秒形式的时间段默认情况是不设置也就是没有刷新间隔,缓存仅仅调用语句时刷新。 

size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值1024。 

readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false

 

 

 

 

分享到:
评论

相关推荐

    Java的MyBatis框架中XML映射缓存的使用教程

    MyBatis程序在做好XML映射后能够有缓存的功能,这样映射过SQL语句的配置以后就可以拿过来直接用了,这里我们来一起总结一下Java的MyBatis框架中XML映射缓存的使用教程

    mybatis笔记.zip

    MyBatis通过XML或注解的方式将Java对象映射到数据库中的SQL语句。 2. 配置文件和配置项: mybatis-config.xml是MyBatis的主配置文件,其中包含了数据库连接信息、类型别名、映射器配置等。 配置项如数据源、事务...

    MyBatis入门以及提高

    mybatis配置文件SqlMapConfig.xml*** mybatis核心: mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis的动态sql(掌握) *****灵活 高级知识 订单商品数据模型分析 高级结果集映射(一对一、...

    mybatis知识点总结.docx

    mybatis-config.xml是MyBatis的主配置文件,其中包含了数据库连接信息、类型别名、映射器配置等。 配置项如数据源、事务管理器、缓存配置、全局设置等可在配置文件中进行定义。 3. 映射器文件: 映射器文件(Mapper...

    MyBatis-3-User-Guide用户手册(中文英文)

    SQL 映射的 XML 文件 \ 19 select\ 20 insert,update,delete \ 21 sql\ 23 Parameters \ 24 resultMap \ 25 高级结果映射\ 27 id,result \ 29 支持的 JDBC 类型 \ 30 构造方法\ 30 关联\ 31 集合\ 34 ...

    Mybatis面试题(含答案)_.pdf

    2. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗? 3. Mybatis 是如何进行分页的?分页插件的原理是什么? 4. ...

    mybatis思维导图总结.zip

    3. 映射器文件 映射器文件的结构和作用。 SQL 映射的基本元素:、、、。 参数映射和结果映射。 4. 动态 SQL 使用 、、、&lt;otherwise&gt; 构建动态 SQL。 动态 SQL 的应用场景和语法示例。 5. 注解配置 使用注解替代...

    mybatis课件.rar

    MyBatis课件结构示例: ...使用注解代替XML映射器文件。 常用的注解如@Select、@Insert、@Update、@Delete。 7. 一级缓存与二级缓存: 一级缓存的概念和使用。 二级缓存的配置和作用。 缓存策略和刷新机制。 8.

    项目管理-Mybatis学习源码(三)

    SQL 映射配置:MyBatis 使用 XML 文件或注解来描述 SQL 语句和 Java 方法之间的映射关系。这种分离的方式使得 SQL 语句的维护和修改更加方便,同时也提高了代码的可读性。 参数映射:MyBatis 支持将 Java 对象与 ...

    项目管理-mybatis学习源码(二)

    SQL 映射配置:MyBatis 使用 XML 文件或注解来描述 SQL 语句和 Java 方法之间的映射关系。这种分离的方式使得 SQL 语句的维护和修改更加方便,同时也提高了代码的可读性。 参数映射:MyBatis 支持将 Java 对象与 ...

    项目管理-Mybatis学习源码(一)

    SQL 映射配置:MyBatis 使用 XML 文件或注解来描述 SQL 语句和 Java 方法之间的映射关系。这种分离的方式使得 SQL 语句的维护和修改更加方便,同时也提高了代码的可读性。 参数映射:MyBatis 支持将 Java 对象与 ...

    Spring Boot Mybatis使用详解含示例(值得珍藏)

    MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。 以下是 MyBatis 的主要特点: 简单易学:MyBatis 框架结构...

    Mybatis.PDF

    和测试讲解了在 MyBatis XML 方式和注解方式中进行增、册 改、查操作的基本用法,介绍了动态 SQL 在不同方面的应用以及在使用过程中的最佳实践方案。针对 MyBatis 高级映射、存储过程和类型处理器提 供了丰富的示例...

    mybatis学习笔记

    2.4.2 Mapper.xml(映射文件) 20 2.4.3 Mapper.java(接口文件) 21 2.4.4 加载UserMapper.xml文件 22 2.4.5 测试 22 2.4.6 总结 23 3 SqlMapConfig.xml配置文件 24 3.1 配置内容 24 3.2 properties(属性) 24 3.3 ...

    MyBatis从入门到精通__刘增辉电子工业出版社

    通过全面的示例代码和测试讲解了在MyBatis XML方式和注解方式中进行增、删、改、查操作的基本用法,介绍了动态SQL在不同方面的应用以及在使用过程中的*实践方案。针对MyBatis高级映射、存储过程和类型处理器提供了...

    MyBatis 从入门到精通

    通过全面的示例代码和测试讲解了在 MyBatis XML 方式和注解方式中进行增、删、改、查操作的基本用法,介绍了动态 SQL 在不同方面的应用以及在使用过程中的最佳实践方案。针对 MyBatis 高级映射、存储过程和类型...

    MyBatis_Course:MyBatis 适合初学者学习

    v0.5 - 为实体类定义别名,简化sql映射xml文件中的引用 v0.6 - 解决字段名与实体类属性名不相同的冲突 v0.7 - MyBatis中使用association标签来解决一对一的关联查询 v0.8 - MyBatis中使用collection标签来解决一对多...

    1000道 互联网Java架构师面试题.pdf和JAVA核心知识整理.zip

    9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? 10、Mybatis 是如何进行分页的?分页插件的原理是什么? 11、...

Global site tag (gtag.js) - Google Analytics