项目中有个需求,要将一个源数据库的记录迁移到目的数据库,目的端数据库的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文件里去.
分享到:
相关推荐
介绍Ibatis框架中需要同时连接多个资料库的方法,包括.net和Java两种
spring,myibatis,配置文件,数据源,web工程
整合了ibatis和spring 采用了数据源的配置 ibatis有详细的解释
是不是好东西你们去鉴定,SpringMVC + Spring + ibatis 可以配置多数据源,这个Demo 扩展性极强,就看你们自己如何发挥。
SSM多数据源分包
11.2 为其他数据源使用DAO模式 203 11.2.1 示例:为LDAP使用DAO 203 11.2.2 示例:为Web服务使用DAO 208 11.3 使用Spring DAO 209 11.3.1 编写代码 209 11.3.2 为什么使用Spring代替iBATIS 211 11.4 创建自己的DAO层...
打包好的DBCP配置相关jar包,配置DBCP时会很有用,包含commons-dbcp.jar与commons-pool.jar
压缩包里有两个 springMVC+Ibatis 的项目:HessianServer(服务器端),HessianClient(客户端),解压导入到MyEclipse 更改配置文件中的数据源,建表(和实体类对应的表),执行客户端中的BasicClient.java文件即可...
struts spring2 ibatis整合代码实例 已经配置好的。数据库也配置好了。 可以适合mysql主从配置多个数据源的。
配置多数据源时,要让spring-boot不自动注入data-source和sqlSessionFactory。 。常问问题1,出现了如下BUG org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection....
使用struts2(json-plugin) + spring2 + ibatis2 + extjs2.2 + mysql5.0架构开发的图书管理系统,对学习struts2,json-plugin,spring2,ibatis2, ...* 部署时,注意修改相应的数据源配置applicationContext-common.xml
generator的配置文件Tomcat-config ---tomcat的配置文件,配置了context以及数据源WEB-INF ---项目的部署目录架构思路:使用Tomcat做启动使用tomcat提供的数据源使用tomcat提供的热加载机制后期方便添加web界面功能...
ToolsGameServer环境搭建工具包apache-tomcat-7.0.57tomcat程序,需要做如下修改:conf/server.xml中添加指向GameServer的Context标签conf/context.xml 中添加数据源conf/web.xml添加数据源生命apache-mina-2.0.9-...
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" p:dataSource-ref="dataSourceProxy"> <value>classpath:SqlMapConfig.xml</value> </property> ...
部分配置代码,所有代码都有...-- 配置数据源 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <value>classpath:SqlMapConfig.xml </bean>
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
-- 数据源A --> ${jdbc.driver}"/> ${jdbc.url}"/> ${jdbc.username}"/> ${jdbc.password}"/> <!-- 数据源B --> ${jdbc2.driver}"/> ${jdbc2.url}"/> ${jdbc2.username}"/> ${...
表现层框架Struts 1:讲解Struts 1的入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成、数据库开发技术,并分别实现与Hibernate、iBATIS持久层框架的集成开发。..表现层框架Struts 2:讲解Struts 2的...