最近在学习Ibatis 源码,看到FifoCacheController在项目很有用途分享大家
package com.ibatis.sqlmap.engine.cache.fifo;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import com.ibatis.sqlmap.engine.cache.CacheController;
import com.ibatis.sqlmap.engine.cache.CacheModel;
/**
* FIFO (first in, first out) cache controller implementation
*/
public class FifoCacheController implements CacheController {
private int cacheSize;
private Map cache;
private List keyList;
/**
* Default constructor
*/
public FifoCacheController() {
this.cacheSize = 100;
//用Map放key value 可以用ConcurrentHashMap优化性能
this.cache = Collections.synchronizedMap(new HashMap());
//用LinkedList放key
this.keyList = Collections.synchronizedList(new LinkedList());
}
public int getCacheSize() {
return cacheSize;
}
public void setCacheSize(int cacheSize) {
this.cacheSize = cacheSize;
}
/**
* Configures the cache
*
* @param props Optionally can contain properties [reference-type=WEAK|SOFT|STRONG]
*/
public void setProperties(Properties props) {
String size = props.getProperty("cache-size");
if (size == null) {
size = props.getProperty("size");
}
if (size != null) {
cacheSize = Integer.parseInt(size);
}
}
/**
* Add an object to the cache
*
* @param cacheModel The cacheModel
* @param key The key of the object to be cached
* @param value The object to be cached
*/
public void putObject(CacheModel cacheModel, Object key, Object value) {
cache.put(key, value);
keyList.add(key);
//如果超过大小就删除头部元素
if (keyList.size() > cacheSize) {
try {
Object oldestKey = keyList.remove(0);
cache.remove(oldestKey);
} catch (IndexOutOfBoundsException e) {
//ignore
}
}
}
/**
* Get an object out of the cache.
*
* @param cacheModel The cache model
* @param key The key of the object to be returned
* @return The cached object (or null)
*/
public Object getObject(CacheModel cacheModel, Object key) {
return cache.get(key);
}
public Object removeObject(CacheModel cacheModel, Object key) {
keyList.remove(key);
return cache.remove(key);
}
/**
* Flushes the cache.
*
* @param cacheModel The cache model
*/
public void flush(CacheModel cacheModel) {
cache.clear();
keyList.clear();
}
}
分享到:
- 2009-10-31 15:35
- 浏览 862
- 评论(0)
- 论坛回复 / 浏览 (0 / 1543)
- 查看更多
相关推荐
iBATIS-SqlMaps-2-Tutorial_cniBATIS-SqlMaps-2-Tutorial_cn.pdf.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdf
《ibatis-sqlmaps-2_cn》是一本专注于介绍IBATIS框架的中文教程,非常适合初学者和有经验的开发者进行深入学习。IBATIS,作为一个轻量级的持久层框架,它为Java应用程序提供了数据库操作的支持,尤其在处理SQL映射...
知识点1:iBATIS-SqlMaps-2 简介 iBATIS-SqlMaps-2 是一个基于 Java 的持久层框架,旨在简化 Java 应用程序中的数据库交互。它提供了一种灵活的方式来映射 Java 对象到数据库表,允许开发者使用 SQL 语句来操作...
iBATIS-SqlMaps-2_cn中文文档
《iBATIS-SqlMaps-2-Tutorial_cn》是一本针对初学者的优秀教程,它深入浅出地介绍了iBATIS这一流行的数据访问框架。iBATIS,作为Java世界中的一个轻量级持久层框架,它提供了一种将SQL查询与Java代码解耦合的方法,...
Ibatis基本配置---[环境搭建
apache开源项目源码ibatis-3-core-src-3.0.0.227 ibatis框架java源程序 spring,struts,hibernate,ibatis,框架源码 各种ibatis框架应用源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其...
iBATIS-SqlMaps-2 是一套针对Java开发者的开源持久层框架,它提供了一种将SQL语句和Java代码分离的方式,使得开发者可以更灵活地处理数据库操作。本资料集为日文版,旨在帮助熟悉日语的开发者了解和掌握iBATIS-Sql...
iBATIS-SqlMaps ibatis入门教程,教你如何做配置ibatis
ibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zipibatis-3-core-3.0.0.242.jar.zip
《iBATIS-SqlMaps-2_cn.pdf》是关于iBATIS SQL Maps的中文版文档,它详尽地阐述了如何使用SQL Maps来构建数据库驱动的Java应用。iBATIS是一个开源的Java库,它的核心功能是简化Java应用程序与数据库之间的交互,尤其...
1. **安装与配置**:介绍如何将iBATIS-SqlMaps-2集成到Java项目中,包括添加依赖、配置数据源以及设置SqlMapConfig.xml文件。 2. **SqlMap设计**:讲解SqlMap XML文件的结构和元素,如`<sql>`、`<select>`、`...
ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip ibatis-3-core-3.0.0.242.zip
ibatis-3-core-3.0.0.200
1. 下载说明.HTM:这可能是一个包含下载和安装指南的HTML文档,详细说明了如何获取、解压和使用iBATIS-SqlMaps-2_cn的相关资料。 2. iBATIS-SqlMaps-2_cn.pdf:这个PDF文件很可能包含iBATIS SqlMaps 2.0的中文版...
### iBATIS-SqlMaps-2_ja.pdf 相关知识点 #### iBATIS Data Mapper 概览 iBATIS Data Mapper(也称为 SQL Maps)是一个开源框架,它旨在简化与关系数据库交互所需的 Java 代码量。通过使用简单的 XML 配置文件,...
《iBATIS-SqlMaps-中文教程》是一个深入解析iBATIS框架的资源,适合对Java Web开发感兴趣的初学者和进阶者。iBATIS是一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,简化...
《iBATIS-SqlMaps-开发指南》是针对iBATIS框架的重要参考资料,分为version 1.0和version 2两个版本。iBATIS是一个Java编程语言中的持久层框架,它允许开发者将SQL语句与Java代码分离,提高了数据访问的灵活性和效率...
1. **动态SQL**:iBATIS的一大亮点是它的动态SQL功能。通过在XML映射文件中使用条件语句(如`if`, `where`, `choose`, `when`, `otherwise`等),开发者可以根据需要动态构建SQL查询,避免了在Java代码中拼接SQL字符...
ibatis2-dao-2.1.6.589.jar文件,ibatis实现控制层