`
mrjeye
  • 浏览: 178038 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mybatis 缓存

阅读更多
pom:
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>${org.mybatis-version}</version>
</dependency>
		
<dependency>
	<groupId>org.mybatis.caches</groupId>
	<artifactId>mybatis-ehcache</artifactId>
	<version>1.0.0-RC1</version>
</dependency>


log4j:
<logger name="org.apache.ibatis">
	<level value="debug" />
</logger>
	
<logger name="com.mysql.jdbc">
	<level value="debug" />
</logger>

<logger name="org.mybatis">
	<level value="debug" />
</logger>

<!-- 显示sql -->
<logger name="java.sql">
	<level value="debug" />
</logger>


mapper:
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import cn.wolaidian.db.domain.Content;

@CacheNamespace(implementation=org.mybatis.caches.ehcache.EhcacheCache.class)
public interface ContentMapper {
	
	@Insert("insert into content values(default, #{typeName}, #{title}, #{titlePic}, #{content}, #{source}, #{author}, default, default, default, #{state})")
	@Options(flushCache=true)
	public void saveContent(Content content);
	
	@Delete("delete from content where id = #{contentID}")
	@Options(flushCache=true)
	public void deleteContent(int contentID);
	
	@Select("select * from content where id = #{contentID}")
	@Results({
		@Result(property = "typeName", column = "type_name"),
		@Result(property = "titlePic", column = "title_pic"),
		@Result(property = "createTime", column = "create_time")
	})
	public Content getContent(int contentID);
	
	@Options(flushCache=true)
	public void updateContent(Content content);
}


结果:
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.0
DEBUG: java.sql.PreparedStatement - ==>  Executing: select * from content_type 
DEBUG: java.sql.PreparedStatement - ==> Parameters: 
DEBUG: java.sql.ResultSet - <==    Columns: id, name, title, detail, create_time, state
DEBUG: java.sql.ResultSet - <==        Row: 1, news, ????, ????, 2011-08-10 10:16:41.0, 1
DEBUG: java.sql.ResultSet - <==        Row: 2, products, ????, ????, 2011-08-10 10:44:47.0, 1
DEBUG: java.sql.ResultSet - <==        Row: 3, examples, ????, ????, 2011-08-10 10:45:09.0, 1
DEBUG: java.sql.ResultSet - <==        Row: 4, knowledge, ???, ???, 2011-08-10 10:45:32.0, 1
DEBUG: java.sql.ResultSet - <==        Row: 5, industry, ????, ????, 2011-08-10 10:48:56.0, 1
DEBUG: java.sql.ResultSet - <==        Row: 6, activity, ????, ????, 2011-08-10 10:53:33.0, 1
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.0
DEBUG: java.sql.PreparedStatement - ==>  Executing: select id, type_name, title, title_pic, substring(replace(replace(content, '<p>', ''), '</p>', ''), 1, 150) as content, create_time , source, author, state from content where type_name = ? limit 0, ? 
DEBUG: java.sql.PreparedStatement - ==> Parameters: industry(String), 8(Integer)
DEBUG: java.sql.ResultSet - <==    Columns: id, type_name, title, title_pic, content, create_time, source, author, state
DEBUG: java.sql.ResultSet - <==        Row: 7, industry, ????1, null, 
	????1
, 2011-08-10 10:51:26.0, ????1, ????1, 1
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.0
DEBUG: java.sql.PreparedStatement - ==>  Executing: select id, type_name, title, title_pic, substring(replace(replace(content, '<p>', ''), '</p>', ''), 1, 150) as content, create_time , source, author, state from content where type_name = ? limit 0, ? 
DEBUG: java.sql.PreparedStatement - ==> Parameters: knowledge(String), 8(Integer)
DEBUG: java.sql.ResultSet - <==    Columns: id, type_name, title, title_pic, content, create_time, source, author, state
DEBUG: java.sql.ResultSet - <==        Row: 5, knowledge, ???1, null, 
	???1
, 2011-08-10 10:47:18.0, ???1, ???1, 1
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.25
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.4
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Creating SqlSession from SqlSessionFactory
DEBUG: java.sql.Connection - ooo Connection Opened
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession
DEBUG: org.apache.ibatis.cache.decorators.LoggingCache - Cache Hit Ratio [cn.wolaidian.db.mapper.ContentTypeMapper]: 0.5
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization committed SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Transaction synchronization closed SqlSession


注:缓存默认为可读写,刷新间隔为3600000ms,缓存大小为1000,这些参数在必要时做相应调整。
分享到:
评论

相关推荐

    Mybatis缓存机制案例

    Mybatis缓存机制是数据库操作中的重要组成部分,它能够提高数据访问效率,减少对数据库的重复查询。在Mybatis中,缓存分为一级缓存和二级缓存,这两种缓存各有其特点和应用场景。 一级缓存是SqlSession级别的缓存,...

    MyBatis缓存(一级缓存、二级缓存)

    缓存是MyBatis性能优化的重要手段,分为一级缓存和二级缓存。在这篇文章中,我们将深入探讨这两个级别的缓存机制及其工作原理。 **一级缓存** 一级缓存是SqlSession级别的缓存,也称为局部缓存。当你执行一个查询...

    mybatis缓存

    mybatis支持缓存,如果我们查找数据库中某一条记录时,先从缓存中获取,如果缓存中不存在该记录,则从数据库中获取,在放入到缓存中。该文档是关于mybatis使用一级或二级缓存的介绍

    Mybatis缓存测试示例

    在这个“Mybatis缓存测试示例”中,我们将深入探讨Mybatis的缓存机制,以及如何在实际项目中进行测试。 Mybatis 的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一SqlSession内的多次相同查询会复用...

    Mybatis系列教程Mybatis缓存共17页.pdf

    本教程“Mybatis系列教程Mybatis缓存共17页”旨在深入解析Mybatis的缓存功能。 在Mybatis中,缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的多次相同查询会复用第一次查询的结果,...

    Mybatis缓存开源架构源码2021.pdf

    在这篇文档《Mybatis缓存开源架构源码2021》中,很可能会深入探讨这两级缓存的工作原理和实现。 首先,一级缓存是 SqlSession 级别的,基于 HashMap 实现。当我们在一个 SqlSession 中执行了查询操作,结果会被缓存...

    mybatis+redis缓存配置

    #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级缓存和二级缓存。 - **一级缓存**:...

    mybatis 缓存的简单配置

    标题 "mybatis 缓存的简单配置" 涉及的是MyBatis框架中的缓存机制,这是一个关键特性,用于提升数据库操作的效率。MyBatis的缓存分为一级缓存和二级缓存,它们各自有不同的作用和实现方式。 一级缓存是SqlSession...

    MyBatis缓存机制深度解剖[收集].pdf

    通过对MyBatis缓存机制的深入理解,开发者可以更有效地利用缓存提升应用性能,同时避免并发控制和数据一致性的问题。通过自定义缓存策略,还可以根据项目需求调整缓存的行为,比如使用更复杂的排除算法或调整缓存...

    Mybatis 缓存原理及失效情况解析

    Mybatis 缓存原理及失效情况解析 Mybatis 缓存是指将经常查询的数据存于内存中,以提高查询效率,解决高并发系统的性能问题。Mybatis 缓存分为一级缓存和二级缓存两种。 一级缓存,也称为本地缓存,指的是...

    【MyBatis学习笔记八】——MyBatis缓存.zip

    本篇笔记将深入探讨MyBatis的缓存机制,包括一级缓存和二级缓存的概念、工作原理、配置与使用。 一级缓存是SqlSession级别的缓存,每当执行一个SQL查询时,如果结果不在缓存中,MyBatis会将其放入一级缓存。当同一...

    mybatis缓存的配置文件

    在处理大量数据时,为了提高性能,MyBatis引入了缓存机制。缓存可以分为一级缓存和二级缓存,它们在不同的范围内存储和复用已查询过的数据,避免重复的数据库访问。 一级缓存是SqlSession级别的,它是默认开启的。...

    MyBatis缓存功能原理及实例解析

    MyBatis缓存功能原理及实例解析 MyBatis缓存功能原理及实例解析是MyBatis框架中非常重要的一部分,它可以极大的提升查询效率,解决高并发系统的性能问题。缓存机制可以将用户经常查询的数据放在缓存(内存)中,...

    MyBatis-05 缓存机制

    本篇文章将详细探讨MyBatis的缓存机制,包括一级缓存和二级缓存,以及如何将MyBatis与第三方缓存EhCache进行整合。 首先,我们来了解一级缓存。一级缓存是SqlSession级别的,也称为本地缓存。当我们在一个...

    mybatis缓存源码解析

    个人学习mybatis源码总结

    缓存处理-mybatis层

    2. 分布式环境下的缓存:在分布式系统中,二级缓存可能导致数据冲突,这时可以考虑使用分布式缓存解决方案,如Redis或Memcached,配合MyBatis的插件实现分布式缓存。 3. 缓存穿透和缓存雪崩:缓存穿透是指查询的...

    MyBatis缓存实现原理及代码实例解析

    MyBatis提供了两种级别的缓存:一级缓存(本地缓存)和二级缓存(全局缓存)。 一级缓存是SqlSession级别的,它默认始终开启。当在一个SqlSession中执行SQL查询时,查询结果会被存储在本地缓存中。如果后续请求相同...

    Mybatis(dao)缓存|mybatis+redis(dao+service)缓存验证

    #### 一、Mybatis缓存机制概述 Mybatis提供了一级缓存和二级缓存两种缓存机制,这两种缓存机制有助于提高数据访问的效率。 **1.1 一级缓存** 一级缓存是在同一个`SqlSession`生命周期内的缓存机制,它基于Per ...

    mybatis二级缓存

    标题中的“mybatis二级缓存”指的是MyBatis框架中的一个重要特性,它是MyBatis缓存机制的一部分,用于提升数据库查询效率。MyBatis一级缓存是SqlSession级别的,而二级缓存则是在整个Mapper配置范围内的全局缓存,...

Global site tag (gtag.js) - Google Analytics