`

强制刷新Ibatis中的缓存(OSCache)

 
阅读更多

持久层使用Ibatis,并开启动缓存

后台画面可用如下代码强制刷新(根据缓存ID来刷新,不传递缓存参数时,刷新所有缓存)

Java代码 复制代码 
  1. // spring注入   
  2.     private SqlMapClient sqlMapClient;   
  3.   
  4.     public SqlMapClient getSqlMapClient() {   
  5.         return sqlMapClient;   
  6.     }   
  7.   
  8.     public void setSqlMapClient(SqlMapClient sqlMapClient) {   
  9.         this.sqlMapClient = sqlMapClient;   
  10.     }   
  11.   
  12.     public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request,   
  13.             HttpServletResponse response) throws Exception {   
  14.         String[] cacheModelIds = new String[] { "TBL_SELL.oneDayCache" };   
  15.   
  16.         // 刷新指定缓存   
  17.         if (cacheModelIds.length > 0) {   
  18.             for (String cacheModelId : cacheModelIds) {   
  19.                 sqlMapClient.flushDataCache(cacheModelId);   
  20.             }   
  21.         } else {   
  22.             // 刷新所有缓存   
  23.             sqlMapClient.flushDataCache();   
  24.         }   
  25.         return null;   
  26.     }  
// spring注入
	private SqlMapClient sqlMapClient;

	public SqlMapClient getSqlMapClient() {
		return sqlMapClient;
	}

	public void setSqlMapClient(SqlMapClient sqlMapClient) {
		this.sqlMapClient = sqlMapClient;
	}

	public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		String[] cacheModelIds = new String[] { "TBL_SELL.oneDayCache" };

		// 刷新指定缓存
		if (cacheModelIds.length > 0) {
			for (String cacheModelId : cacheModelIds) {
				sqlMapClient.flushDataCache(cacheModelId);
			}
		} else {
			// 刷新所有缓存
			sqlMapClient.flushDataCache();
		}
		return null;
	}


输出日志

Java代码 复制代码 
  1. 13:57:44,250 DEBUG CacheModel:27 - Cache 'TBL_SELL.oneDayCache': flushed  

http://www.iteye.com/topic/829263

分享到:
评论
Global site tag (gtag.js) - Google Analytics