[b][size=large]1、SqlMapConfig[/size][/b]

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sqlMapConfig 
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-config-2.dtd"> 
<sqlMapConfig> 
  <settings    
   cacheModelsEnabled ="true"    
   lazyLoadingEnabled="true"    
   enhancementEnabled="true"    
   errorTracingEnabled="true"    
   maxRequests="32"  
   maxSessions="10"   
   maxTransactions="5"    
   useStatementNamespaces="true"/>  
   <!--cacheModelsEnabled 是否启用缓存机制-->
   <!--lazyLoadingEnabled  是否启用延迟加载机制 -->
   <!--enhancementEnabled 是否启用字节码增强机制 -->
   <!--errorTracingEnabled 是否启用错误处理机制 -->
   <!--maxRequests 最大并发请求数 -->
   <!--maxSessions 最大Session数 -->   
   <!--maxTransactions最大并发事务数 -->
   <!--useStatementNamespaces 是否启用名称空间 -->  

 <!--<transactionManager type ="JDBC">      
     <dataSource type ="SIMPLE">  
     </dataSource>     
  </transactionManager>-->  

   <sqlMap resource="config/ibatis_dirCounty.xml" /> 
</sqlMapConfig>




[b][size=medium]transactionManager节点[/size][/b]


transactionManagerab定义了ibatis的事务管理器,目前提供了以下几种选择:


1) JDBC:通过传统JDBC Connection.commit/rollback实现事务支持.


2) JTA:使用容器提供的JTA服务实现全局事务管理.


3) EXTERNAL:外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制.此时ibatis将把所有事务委托给外部容器进行管理.此外,通过Spring等轻量级容量实现事务的配置化管理也是一个不错的选择.



[size=medium][b]dataSource节点[/b][/size]


dataSource从属于 transactionManager,用于设定ibatis运行期使用DataSource属性.type 属性: dataSource元素的 type 属性指定了 dataSource 的实现类型.可选项目:


[b]1) SIMPLE[/b]


SIMPLE 是 ibatis内置的 dataSource实现,其中实现了一个简单的数据库连接池机制,对应 ibatis实现类为com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.


JDBC 使用数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等.


[b]2) DBCP[/b]


基于Apache DBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,建议使用该选项,对应ibatis实现类为


com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory.


JTA :使用jta事务管理器管理事务(全局事务),使用userTranstion对象.


[b]3) JNDI[/b]


使用J2EE容器提供的DataSource实现, DataSource将通过指定的JNDI Name从容器中获取.对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory.


Ibatis 不控制事务,事务交由外部控制,一般在CTM,或spring托管事务中使用.


[b][size=large]2、SqlMap[/size][/b] 

[b]1、namespace[/b] 

命名空间,避免属性名称冲突 

当useStatementNamespaces设置为true的时候,可以设置命名空间。 

[color=red]<sqlMap namespace="country">[/color] 

代码调用,需要带上namespace,如下: 

(List<TbDirCountryEntity>)this.getSqlMapClientTemplate().queryForList("[color=red]country.getAllDirCountry[/color]");

[b]2、typeAlias[/b]


定义实体的别名。


其中type为实体的全名(包括路径);


alias为实体的别名,在需要用到实体全名的地方可以直接用别名替代。


简单实例如下:


<typeAlias type="com.bluedon.common.entity.TbDirCountryEntity" 
alias="dirCountry"/>




[b]3、statement[/b]


元素是个通用声明,可以用于任何类型的SQL语句,甚至包含多个语句(用;分隔)。通常,使用下面具体的statement类型是个好主意。


<insert>


<update>


<delete>


<select>


<procedure>


这些标签的使用见后章节。