iBatis的xml配置文件对行的先后顺序有严格要求。假设要将在外部配置JDBC的连接属性,那么需要这样配置:
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.87.30.32:3306/tdmc_leizm
jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://10.87.30.32:3306/tdmc_leizm
jdbc.user=root
jdbc.password=123456
sqlMapConfig.xml
<?
xml
version
="1.0"
encoding
="GBK"
?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
< sqlMapConfig >
<!-- 引入外部的JDBC配置-->
< properties resource ="jdbc.properties" />
< settings cacheModelsEnabled ="true" enhancementEnabled ="true"
lazyLoadingEnabled ="true" maxRequests ="512" maxSessions ="128"
maxTransactions ="32" useStatementNamespaces ="true" />
<!-- 引入配置文件的属性值-->
< transactionManager type ="JDBC" >
< dataSource type ="SIMPLE" >
< property name ="JDBC.Driver" value ="${jdbc.driver}" />
< property name ="JDBC.ConnectionURL" value ="${jdbc.url}" />
< property name ="JDBC.Username" value ="${jdbc.user}" />
< property name ="JDBC.Password" value ="${jdbc.password}" />
</ dataSource >
</ transactionManager >
< sqlMap resource ="com/asiainfo/tdmc/entity/sqlmap/Cfg_code.xml" />
</ sqlMapConfig >
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
< sqlMapConfig >
<!-- 引入外部的JDBC配置-->
< properties resource ="jdbc.properties" />
< settings cacheModelsEnabled ="true" enhancementEnabled ="true"
lazyLoadingEnabled ="true" maxRequests ="512" maxSessions ="128"
maxTransactions ="32" useStatementNamespaces ="true" />
<!-- 引入配置文件的属性值-->
< transactionManager type ="JDBC" >
< dataSource type ="SIMPLE" >
< property name ="JDBC.Driver" value ="${jdbc.driver}" />
< property name ="JDBC.ConnectionURL" value ="${jdbc.url}" />
< property name ="JDBC.Username" value ="${jdbc.user}" />
< property name ="JDBC.Password" value ="${jdbc.password}" />
</ dataSource >
</ transactionManager >
< sqlMap resource ="com/asiainfo/tdmc/entity/sqlmap/Cfg_code.xml" />
</ sqlMapConfig >
引入的配置文件必须写在第一行。
上面的配置与下面给出的配置效果是完全一样的,不使用外部配置文件的写法:
<?
xml
version
="1.0"
encoding
="GBK"
?>
<!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" enhancementEnabled ="true"
lazyLoadingEnabled ="true" maxRequests ="512" maxSessions ="128"
maxTransactions ="32" useStatementNamespaces ="true" />
< transactionManager type ="JDBC" >
< dataSource type ="SIMPLE" >
< property name ="JDBC.Driver" value ="com.mysql.jdbc.Driver" />
< property name ="JDBC.ConnectionURL" value ="jdbc:mysql://10.87.30.32:3306/tdmc_leizm" />
< property name ="JDBC.Username" value ="root" />
< property name ="JDBC.Password" value ="123456" />
</ dataSource >
</ transactionManager >
< sqlMap resource ="com/asiainfo/tdmc/entity/sqlmap/Cfg_code.xml" />
</ sqlMapConfig >
<!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" enhancementEnabled ="true"
lazyLoadingEnabled ="true" maxRequests ="512" maxSessions ="128"
maxTransactions ="32" useStatementNamespaces ="true" />
< transactionManager type ="JDBC" >
< dataSource type ="SIMPLE" >
< property name ="JDBC.Driver" value ="com.mysql.jdbc.Driver" />
< property name ="JDBC.ConnectionURL" value ="jdbc:mysql://10.87.30.32:3306/tdmc_leizm" />
< property name ="JDBC.Username" value ="root" />
< property name ="JDBC.Password" value ="123456" />
</ dataSource >
</ transactionManager >
< sqlMap resource ="com/asiainfo/tdmc/entity/sqlmap/Cfg_code.xml" />
</ sqlMapConfig >
有关settings的配置:
<
settings
<!-- 数据高速缓存配置,默认为true,将近期使用过的数据保存在内存中,为充分利用该技术,还必须为已映射的语句配置高速缓存模型 -->
cacheModelsEnabled="true"
<!-- 是否使用cglib中那些已经优化的类来提高延迟加载的性能,默认为ture,如果cglib包不存在,则自动禁用 -->
enhancementEnabled="true"
<!-- 延迟加载属性,默认为true,适用于存在相关联的映射语句 -->
lazyLoadingEnabled="true"
<!-- 已废弃,最大的活动请求数 -->
maxRequests="512"
<!-- 已废弃,最大事务相关(线程)请求数 -->
maxSessions="128"
<!-- 已废弃,最大活动事务数 -->
maxTransactions="32"
<!-- 对SQLMap使用命名空间 -->
useStatementNamespaces="true"/>
<!-- 数据高速缓存配置,默认为true,将近期使用过的数据保存在内存中,为充分利用该技术,还必须为已映射的语句配置高速缓存模型 -->
cacheModelsEnabled="true"
<!-- 是否使用cglib中那些已经优化的类来提高延迟加载的性能,默认为ture,如果cglib包不存在,则自动禁用 -->
enhancementEnabled="true"
<!-- 延迟加载属性,默认为true,适用于存在相关联的映射语句 -->
lazyLoadingEnabled="true"
<!-- 已废弃,最大的活动请求数 -->
maxRequests="512"
<!-- 已废弃,最大事务相关(线程)请求数 -->
maxSessions="128"
<!-- 已废弃,最大活动事务数 -->
maxTransactions="32"
<!-- 对SQLMap使用命名空间 -->
useStatementNamespaces="true"/>
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/808697,如需转载请自行联系原作者