`
goodguyzl
  • 浏览: 46028 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Ibatis 数据源的动态配置

阅读更多

      项目中有个需求,要将一个源数据库的记录迁移到目的数据库,目的端数据库的IP,端口,数据库名,用户名和密码都是从一个配置表里临时查出来的,这就需要在运行时去配置Ibatis的sql-map-config.xml的数据源.

      Google到Ibatis支持的数据源配置方式其中一种就是通过property文件读取连接配置信息.

     sql-map-config.xml中代码如下: 

 

<sqlMapConfig>

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

<properties resource="database.properties"/>  
<transactionManager type="JDBC">   
  <dataSource type="SIMPLE">   
  <property value="${driver}" name="JDBC.Driver"/>   
  <property value="${url}" name="JDBC.ConnectionURL"/>   
  <property value="${username}" name="JDBC.Username"/>   
  <property value="${password}" name="JDBC.Password"/>   
  </dataSource>   
</transactionManager>  

 

 

     之前把<properties resource="config.properties"/>  放到<setting>标签和<transactionManager >之间, 得到了一个XML解析错误, 提示:

     Exception in thread "main" java.lang.RuntimeException: Error occurred.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: The content of element type "sqlMapConfig" must match "(properties?,settings?,resultObjectFactory?,typeAlias*,typeHandler*,transactionManager?,sqlMap+)+".
 at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:49)

 

看了半天才晓得标签是有顺序的, 必须按错误消息的的顺序写标签才行.  汗......

 

config.properties里的配置:

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.56.101:1521:XE
username=practice
password=practice

  

 

读取sql-map-config.xml的java代码不变:

java.io.Reader reader = com.ibatis.common.resources.Resources.getResourceAsReader ("misp/migrate/sql-map-config.xml");
SqlMapClient sqlClient = SqlMapClientBuilder.buildSqlMapClient(reader);

 

当然, 在读取sql-map-config.xml之前,应该先将连接配置用Properties类写入到config.properties文件里去.

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics