All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeesuite.mybatis.plugin.cache.EntityCacheHelper Maven / Gradle / Ivy

/**
 * 
 */
package com.jeesuite.mybatis.plugin.cache;

import java.util.concurrent.Callable;

import com.jeesuite.mybatis.core.BaseEntity;

/**
 * 实体缓存辅助工具(关联自动缓存内容)
 * 
通过该工具的缓存会自动缓存更新 * @description
* @author vakin * @date 2016年11月19日 */ public class EntityCacheHelper { /** * 查询并缓存结果(默认缓存一天) * @param entityClass 实体类class (用户组装实际的缓存key) * @param key 缓存的key(和entityClass一起组成真实的缓存key。
如entityClass=UserEntity.class,key=findlist,实际的key为:UserEntity.findlist) * @param dataCaller 缓存不存在数据加载源 * @return */ public static T queryTryCache(Class entityClass,String key,Callable dataCaller){ return queryTryCache(entityClass, key, CacheExpires.IN_1DAY, dataCaller); } /** * 查询并缓存结果 * @param entityClass 实体类class (用户组装实际的缓存key) * @param key 缓存的key(和entityClass一起组成真实的缓存key。
如entityClass=UserEntity.class,key=findlist,实际的key为:UserEntity.findlist) * @param expireSeconds 过期时间,单位:秒 * @param dataCaller 缓存不存在数据加载源 * @return */ public static T queryTryCache(Class entityClass,String key,long expireSeconds,Callable dataCaller){ String entityClassName = entityClass.getSimpleName(); key = entityClassName + CacheHandler.SPLIT_PONIT + key; T result = CacheHandler.cacheProvider.get(key); if(result == null){ try { result = dataCaller.call(); if(result != null){ CacheHandler.cacheProvider.set(key, result, expireSeconds); String cacheGroupKey = entityClassName + CacheHandler.GROUPKEY_SUFFIX; CacheHandler.cacheProvider.putGroupKeys(cacheGroupKey, key, expireSeconds); } } catch (Exception e) { throw new RuntimeException(e); } } return result; } /** * 移除指定实体组所有缓存 * @param entityClass */ public static void removeCache(Class entityClass){ String entityClassName = entityClass.getSimpleName(); CacheHandler.cacheProvider.clearGroup(entityClassName); } /** * 移除指定实体组指定key的缓存 * @param entityClass * @param key */ public static void removeCache(Class entityClass,String key){ String entityClassName = entityClass.getSimpleName(); key = entityClassName + CacheHandler.SPLIT_PONIT + key; String cacheGroupKey = entityClassName + CacheHandler.GROUPKEY_SUFFIX; CacheHandler.cacheProvider.remove(key); CacheHandler.cacheProvider.clearGroupKey(cacheGroupKey, key); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy