`
dfwang
  • 浏览: 94384 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mybatis 学习转

阅读更多
Mybatis缓存系列
在sqlMap文件中加入cacheModel的配置:

    <cacheModel id="model-cache" type="MEMORY" >

     <flushInterval seconds="60"/>
     <flushOnExecute statement="insertProduct"/>
     <flushOnExecute statement="updateProduct"/>
     <flushOnExecute statement="deleteProduct"/>

     <property name="size" value="1000" />
    </cacheModel>

      这个地方要注意的是,如果在sqlMapConfig里面设置了useStatementNamespaces="true",那么上面的flushOnExecute中的statement里面需要带上namespace,如<flushOnExecute statement="Product.insertProduct"/>,如果useStatementNamespaces="false",则可以直接按上面的写。

     2、配置需要进行cache的sql statment:

      <statement id="getProductList" parameterClass="int" cacheModel="model-cache">
        select * from PRODUCT where PRD_CAT_ID = #value#
      </statement>

     配置好这两步就可实现iBatis的缓存了,下面解释一下含义:

     1步中,cacheModel的id属性用于后面的statement引用,type属性标识采用何种cache方式,可选的有:

“MEMORY” (com.ibatis.db.sqlmap.cache.memory.MemoryCacheController) 。MEMORY cache 实现使用 reference 类型来管理 cache 的行为。垃圾收集器可以根据 reference类型判断是否要回收 cache 中的数据。MEMORY实现适用于没有统一的对象重用模式的应用,或内存不足的应用。
“LRU” (com.ibatis.db.sqlmap.cache.lru.LruCacheController) 。LRU Cache 实现用“近期最少使用”原则来确定如何从 Cache 中清除对象。当 Cache溢出时,最近最少使用的对象将被从 Cache 中清除。使用这种方法,如果一个特定的对象总是被使用,它将保留在 Cache 中,而且被清除的可能性最小。对于在较长的期间内,某些用户经常使用某些特定对象的情况(例如,在 PaginatedList 和常用的查询关键字结果集中翻页) ,LRU Cache 是一个不错的选择。  
“FIFO” (com.ibatis.db.sqlmap.cache.fifo.FifoCacheController) 。FIFO Cache 实现用“先进先出”原则来确定如何从 Cache 中清除对象。当 Cache 溢出时,最先进入 Cache 的对象将从 Cache 中清除。对于短时间内持续引用特定的查询而后很可能不再使用的情况,FIFO Cache 是很好的选择。
“OSCACHE” (com.ibatis.db.sqlmap.cache.oscache.OSCacheController)  。OSCACHE Cache 实现是OSCache2.0缓存引擎的一个 Plugin。它具有高度的可配置性,分布式,高度的灵活性。
       flushInterval 属性是配置自动更新缓存的周期,可以是hours,minutes,seconds或milliseconds。这一点我测试了一下,设置的60秒更新,通过观察日志,在60秒内,第一次查询数据库,之后iBatis会对同样的sql查询直接返回。超过60秒后的第一次查询,又会执行一次查询。这样看了,这个更新的周期可理解为第一次同样的查询可维持在cache中的时长,超过这个时长的第一次查询会触发实际的数据库操作。

      flushOnExecute这是标识什么时候触发更新,statement的名字就是后面的statement的id。

      statement节中设置了cacheModel,就会把这个sql跟cache关联起来。

      是不是很简单呢,这里面我觉得比较关键的地方就是cacheModel的type选择,一般来说用memory就可以了,但一些特殊的应用,需要根据情况需要配置不同的更适合的cache,以进一步提高查询效率。
分享到:
评论
1 楼 ayanami001 2012-04-13  
你这个配置mybatis已经嗝屁了~

相关推荐

    MyBatis学习笔记

    MyBatis的学习不仅仅限于这些基础概念,还包括如何配置MyBatis、如何编写Mapper接口和XML映射文件、如何处理复杂查询和关联关系、如何利用MyBatis进行性能优化等。通过深入学习MyBatis,你可以更好地理解和掌控...

    MyBatis学习实例

    本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...

    从iBatis迁移到MyBatis

    3-User-Guide.pdf" 和 "MyBatis 3 User Guide Simplified Chinese.pdf" 指示了包含MyBatis官方用户指南的资源,这些文档将详细解释如何使用MyBatis,包括上述提到的各个方面,是迁移过程中必不可少的学习材料。...

    Mybatis学习文档

    1. 易于学习:MyBatis 具有简单直观的 API 设计,使得学习成本较低。 2. 易于使用:MyBatis 可以通过简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)...

    Mybatis系列学习源码

    本资源是"Mybatis系列学习源码",适合初学者和有一定经验的开发者深入理解Mybatis的工作原理和实践应用。下面将详细探讨Mybatis的核心概念和关键功能。 1. **SqlSession与Executor** - **SqlSession**:它是...

    学习手册 “玩转”Java系列 — Mybatis

    《玩转》Java系列之Mybatis学习手册,旨在帮助开发者深入理解并熟练运用Mybatis这一流行持久层框架。本手册将全面解析Mybatis的核心概念、关键功能及其在实际开发中的应用,助你从初学者晋升为Mybatis高手。 1. **...

    Mybatis学习源代码

    本文将基于“Mybatis学习源代码”这一主题,深入探讨Mybatis的基本概念、核心功能以及如何通过狂神说的视频教程进行学习。 Mybatis是一个基于Java的持久层框架,它提供了一个SQL映射框架,可以将SQL语句与Java代码...

    mybatis学习所需的依赖包

    在"mybatis学习所需的依赖包"中,我们主要关注以下三个部分: 1. **Ehcache**: Ehcache 是一个广泛使用的开源Java分布式缓存。在MyBatis中,Ehcache可以作为二级缓存,用于存储SQL执行结果,减少对数据库的访问,...

    Mybatis学习源码的实例代码

    在这个"Mybatis学习源码的实例代码"中,我们可以深入理解Mybatis的工作机制和内部实现。 首先,让我们从基础开始。Mybatis的主要组件包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是Mybatis的...

    mybatis学习笔记LBY.pdf

    ### Mybatis学习笔记知识点 #### 1. Mybatis 相关概念 ##### 1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架,它支持普通的 SQL 查询、存储过程以及高级映射等功能。该框架简化了 JDBC 的使用,允许开发者以...

    mybatis学习入门一、mybatis+servlet实现数据显示

    标题 "mybatis学习入门一、mybatis+servlet实现数据显示" 提供了我们即将探讨的核心主题:MyBatis框架的学习入门,以及如何结合Servlet来展示数据。在这个过程中,我们将深入理解MyBatis的基本概念,它的作用,以及...

    spring,springMVC,mybatis学习资料(B站黑马总结)

    标签“SSM学习笔记”表明这份资料是关于Spring、SpringMVC和Mybatis组合的框架学习笔记。 在部分内容中,提到了Java编程语言中int和Integer的区别。简单来说,int是Java的基本数据类型,而Integer是int的封装类,...

    mybatis学习-入门(1)-单独使用mybatis

    在后续的学习中,你还可以了解如何与Spring框架集成,实现更高效的开发流程。MyBatis的灵活性和强大功能使其成为Java开发中的首选持久层框架之一。现在,你可以继续探索MyBatisLearning目录中的资源,加深对MyBatis...

    mybatis学习的源码

    在"mybatis学习1"中,`com.cpf`包下的源码可能涉及MyBatis的基本使用,包括Mapper接口的实现、动态SQL、结果映射等。Mapper接口允许开发者定义SQL查询,并通过方法签名与SQL结果进行匹配。动态SQL是MyBatis的一大...

    mybatis学习

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。...在学习 MyBatis 时,理解其核心组件及原理,熟练掌握 SQL 映射和结果映射,以及如何与 Spring 整合,将有助于提升你的 Java 开发能力。

    mybatis完整学习笔记

    总的来说,这是一份详尽的MyBatis学习资料,适合初学者和有经验的开发者参考。通过学习,你将能够熟练地运用MyBatis进行数据库操作,提升你的JavaWeb开发技能。同时,了解MyBatis的最佳实践也有助于优化项目结构,...

    mybatis学习资料整理

    这份"mybatis学习资料整理"虽然不全面,但包含了MyBatis的一些核心概念和实践应用,还可能包含了他人博客的链接,可以作为学习MyBatis的初步指南。 1. **MyBatis简介**:MyBatis 是一个基于Java的持久层框架,它...

    mybatis学习手册和整合mybatis+spring

    《mybatis学习手册》通常会包含以下几个核心知识点: 1. **MyBatis简介**:介绍MyBatis的基本概念、设计目标和主要功能,包括XML和注解方式的SQL映射文件,以及动态SQL的支持。 2. **环境配置**:如何配置MyBatis...

Global site tag (gtag.js) - Google Analytics