Ehcache学习笔记(二) 根据条件筛选缓存中的数据
Ehcache提供了很方便的索引机制,有的时候我们需要根据一些其他的条件对缓存中的数据进行索引,而不是简单根据KEY来进行索引。
这是实体类 没什么好说的
package com.epkj.test;import java.util.Date;public class User implements java.io.Serializable { private int id; private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } private Date brithray; private double money; public User() { super(); } public User(int id, String name, int age, Date brithray, double money) { super(); this.id = id; this.name = name; this.age = age; this.brithray = brithray; this.money = money; } @Override public String toString() { return this.id + "====" + this.age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBrithray() { return brithray; } public void setBrithray(Date brithray) { this.brithray = brithray; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; }}
主要看XML
查询的代码
package com.epkj.test;import java.util.Date;import java.util.List;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Ehcache;import net.sf.ehcache.Element;import net.sf.ehcache.search.Attribute;import net.sf.ehcache.search.Query;import net.sf.ehcache.search.Result;import net.sf.ehcache.search.Results;public class SerachTest { /** * @param args */ public static void main(String[] args) { CacheManager manager = CacheManager.getInstance(); Ehcache cache = manager.getCache("sampleCache"); //创建测试数据放入缓存 for (int i = 0; i < 50; i++) { Element element = null; if(i <= 20) { element = new Element(i, new User(1, "Txxxxxx" + i, i, new Date(), 3500)); } else { element = new Element(i, new User(1, "Yxxxxxx" + i, i, new Date(), 3500)); } cache.put(element); } //创建Query接口 用法跟hibernate的Query类似 Query query = cache.createQuery(); //取得属性 Attributeage = cache.getSearchAttribute("age"); Attribute name = cache.getSearchAttribute("name"); //可以任务组合查询条件 query.addCriteria(name.ilike("T*").and(age.between(10, 20))); //根据查询的条件 引入结果集 query.includeValues().end(); Results results = query.execute(); List list = results.all(); for (Result result : list) { System.out.println(result.getValue()); } }}
以上是对Ehcache缓存元素的条件查询的一个总结。