`
wrong1111
  • 浏览: 249105 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

ibatis 使用出现异常。

阅读更多

最近使用IBATIS,运用到了CACHEMODEL

 

异常如下:

/SqlMapConfig.xml/end() there are no statement named abatorgenerated_deleteByPrimaryKey .

 

 

SQLMAPCONFIG。XML文件设置如下:

<settings 
		cacheModelsEnabled="true"
		enhancementEnabled="true"
		lazyLoadingEnabled="true"
		maxRequests="128"
		maxSessions="100"
		maxTransactions="5"
		useStatementNamespaces="true"
		defaultStatementTimeout="5"
		statementCachingEnabled="true"
		classInfoCacheEnabled="true"
		errorTracingEnabled="true"
		
/>
 <sqlMap resource="com/ytx/ztc/model/sqlmap/ft_bet_team_SqlMap.xml"/>

 

 

在其运用的XML中配置如下:

ft_bet_team_SqlMap.xml

 

 

<cacheModel type="LRU" id="cache_oddsproviderlist" readOnly="true" serialize="true">
		<flushInterval hours="24"></flushInterval>
		<flushOnExecute statement="odds_provider.abatorgenerated_deleteByPrimaryKey"/>
		<flushOnExecute statement="odds_provider.abatorgenerated_deleteByExample"/>
		<flushOnExecute statement="odds_provider.abatorgenerated_insert"/>
		<flushOnExecute statement="odds_provider.abatorgenerated_updateByPrimaryKey"/>
		<flushOnExecute statement="odds_provider.abatorgenerated_updateByPrimaryKeySelective"/>
		<property value="cache-size" name="200"/>
	</cacheModel>
<select id="getPageOddsProviderList" parameterClass="com.ytx.ztc.model.OddsProvider" resultMap="abatorgenerated_OddsProviderResult">
  select * from ft_bet_team 
</select>

 

 

原因是cacheModel 运行的语句,不能自动加上空间域名。必须手动的添加。如

<flushOnExecute statement="abatorgenerated_deleteByPrimaryKey"/>

 

上面的就会报找不到这条语句。加上空间名后。如下就没有这个问题了。

<flushOnExecute statement="odds_provider.abatorgenerated_deleteByPrimaryKey"/>

这个问题解决后。但是遇到缓存不起作用??

我第一次把数据查询完成后,有第一次查询的结果集中,通过后台数据库“偷偷”的删除其中一条。

 

如果缓存应用成功的话,那么会如前一次查询一样,显示出来。

但结果是查询出来的结果里面没有这条记录了??难道我哪个地方配置有误???

 

现在问题已经解决。。。。原因是在cacheModel 语句的ID中要手动添加空间名。但是在SqlMapConfig.xml

中配置的.也就是说这个 cacehModel是相对全局来说的。而不像XML中的DDL语句.

 statementCachingEnabled="true"
不管用了??

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics