项目中有个需求,要将一个源数据库的记录迁移到目的数据库,目的端数据库的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文件里去.
分享到:
相关推荐
Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 详细教程 本教程主要介绍了 Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 的详细教程。下面将详细介绍如何实现 Spring 整合 ...
1. **创建XML配置文件**:在项目中创建一个名为`mybatis-config.xml`的文件,这是iBATIS的全局配置文件,用于定义数据源、事务管理器等。同时,也需要为每个Mapper创建单独的XML文件,如`UserMapper.xml`,其中包含...
总结来说,装饰模式在切换iBatis多数据源的应用中,起到了扩展和动态切换的作用,它允许我们在不修改原有数据源实现的基础上,通过组合的方式增加新的功能,实现了在运行时选择不同数据源的目标,同时保持了代码的...
给定的XML配置文件展示了如何在Spring中配置ibatis数据源以及ibatis事务管理器。首先,注释掉的`BasicDataSource`部分是用来配置数据源的,这里没有启用,而是选择了使用JNDI数据源。实际生产环境中,通常会使用...
这个文件中包含了数据源、事务管理器、环境配置、Mappers等重要元素的定义。例如: ```xml ``` 在这个配置文件中,我们定义了开发环境的数据源和事务管理器,并指定了Mapper文件的...
全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , iBatisNet.DataProviders.MySql"/> ;user=...
通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。
-- 数据源配置 --> <!-- JNDI数据源配置 --> <value>java:/oracle/payment ``` #### 配置iBatis SqlMapClient 接下来配置了iBatis的SqlMapClient,这里使用的是Spring的`...
1. 数据源配置:在Ibatis3中,我们需要配置Oracle的JDBC驱动,并指定数据库连接信息,如URL、用户名和密码等。 2. 映射文件:通过XML映射文件,定义SQL语句及其结果集映射。对于Oracle的特殊语法,如PL/SQL块,...
2. **Configuration**: 配置对象,存储了所有关于Ibatis的配置信息,包括数据源、映射文件、事务管理等。 3. **Mapper**: Mapper接口和Mapper XML 文件,定义了SQL操作。接口方法对应SQL的执行,XML文件中包含具体...
1. **SqlMapConfig.xml**:这是整个iBATIS系统的配置文件,包含了数据源、事务管理器以及其他相关设置。开发者在此文件中定义数据库连接信息,以及映射文件的位置。 2. **Mapper接口/SqlMap.xml**:Mapper接口是...
在数据读写分离的环境中,iBATIS可以通过配置不同的数据源,分别连接读库和写库。Spring可以管理和切换这些数据源,使得在执行写操作时使用写库,而在读操作时使用读库。 为了实现上述功能,我们需要集成和配置相关...
2. `sqlMapConfig.xml`:iBatis的配置文件,定义了数据源、事务管理器以及映射文件的位置。 标签中提到的`springmvc`是Spring的一个模块,Spring MVC提供了模型-视图-控制器架构,用于处理HTTP请求和响应。配置...
- **dataSource**:数据源配置,类型为`SIMPLE`,表示简单的数据源配置。 - **sqlMap**:指定SQL映射文件的位置,在本例中指向`Student.xml`。 ##### 3. Student.xml 文件 `Student.xml` 文件是具体的SQL映射文件...
Ibatis的配置文件(如`mybatis-config.xml`)是整个框架的核心配置,它定义了数据源、事务管理器、映射文件的位置等信息。`Mapper XML`文件则包含了SQL语句和结果映射,提供了灵活的SQL定制能力。此外,Ibatis还支持...
这里的`<sqlMapConfig>`是配置文件的根元素,其中包含了一系列的设置和数据源配置。 ### 设置部分 配置文件中的`<settings>`标签包含了多个关键参数,它们控制着ibatis的行为特性: - `cacheModelsEnabled`: 控制...
这是Ibatis的核心配置文件,它定义了数据源、事务管理器、SqlSessionFactory以及SqlMapClient等关键组件。主要元素包括: - `<transactionManager>`:定义事务管理器,通常使用JDBC类型的事务管理器。 - `...
-- 数据源配置 --> ``` 2. **映射文件(mapper.xml)** 映射文件是定义SQL语句的地方,包括插入、更新、删除、查询等操作。比如: ```xml <!DOCTYPE mapper PUBLIC "-//mybatis.org//...