ibatis命名空间namespace的使用

ibatis的配置文件中有一个命名空间的属性,如<sqlMap namespace="Application">,默认情况下这个功能是关闭的。 
要打开它需要在SqlMapConfig.xml文件中进行配置: 
<sqlMapConfig> 

<settings 
cacheModelsEnabled="true" 
enhancementEnabled="true" 
lazyLoadingEnabled="true" 
errorTracingEnabled="true" 
maxRequests="32" 
maxSessions="10" 
maxTransactions="5" 
useStatementNamespaces="true" 
/>  

</sqlMapConfig> 

启用了命名空间后,我们用queryForXXX进行操作的时候就要加上命名空间了,即“命名空间名.ID名” 

typeAlias 节点不受命名空间的影响。

【注意】

1、Normandy项目中的配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <!DOCTYPE sqlMapConfig 
  3. PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
  4. "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> 
  5. <sqlMapConfig> 
  6.     <settings lazyLoadingEnabled="true" cacheModelsEnabled="true" 
  7.         enhancementEnabled="true" useStatementNamespaces="true" 
  8.         errorTracingEnabled="true" /> 
  9.  
  10.     <sqlMap resource="ibatis/Application.xml" /> 
  11.     <sqlMap resource="ibatis/Domain.xml" /> 
  12.     <sqlMap resource="ibatis/ConfigKey.xml" /> 
  13.     <sqlMap resource="ibatis/ConfigValue.xml" /> 
  14.     <sqlMap resource="ibatis/NormandyServer.xml" /> 
  15.     <sqlMap resource="ibatis/ConfigValueChangeEvent.xml" /> 
  16. </sqlMapConfig> 

另外:

<sqlMap namespace="Application">
<select id="selectById" resultClass="businessReliableAnalysis.model.User">
<![CDATA[
select ROLE_ID,USER_ID from SEC_ROLE_USER WHERE ROLE_ID=222
]]>
</select>

</sqlMap>

 访问:

  1. public class ApplicationUtil { 
  2.     private SqlMapClientTemplate sqlMapClientTemplate; 
  3.  
  4.     public SqlMapClientTemplate getSqlMapClientTemplate() { 
  5.         return sqlMapClientTemplate; 
  6.     } 
  7.  
  8.     public void setSqlMapClientTemplate( 
  9.             SqlMapClientTemplate sqlMapClientTemplate) { 
  10.         this.sqlMapClientTemplate = sqlMapClientTemplate; 
  11.     } 
  12.  
  13.     public Application getApplicationById(int id) { 
  14.         return (Application) sqlMapClientTemplate.queryForObject( 
  15.                 "Application.selectById", id); //调用ibatis的namespace=Application,id=selectById的xml文件
  16.     } 

 

【注】

1、使用缓存之后,在同一方法中发出的多条sql或同一条sql被发了多次时将被缓存统一发出:cacheModelsEnabled="true" 。?? 待验证

2、IBATIS 何时使用CDATA

 ibatis sql语句中  如果遇到  <,>,&,这三类符号的 ,必须要用CDATA 符号,因为在DTD规定中,那三个字符时有特殊含义的!

posted on 2014-03-18 09:34  刚刚,恏  阅读(2122)  评论(0编辑  收藏  举报

导航