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

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

 

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

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

【注意】

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

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

 访问:

   
   
   
   
  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); 
  16.     } 

 

【注】

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

2、IBATIS 何时使用CDATA

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