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

Ibatis 数据源的动态配置之二

阅读更多

        在之前写的那篇Ibatis 数据源的动态配置里,提到了使用动态写入配置文件(.properties文件)方式来动态配置数据源,起初这个方法还行,因为只有一个任务来写,然后读配置文件,但是当读写的工作设计到两个或者更多的线程后,这种方案的弊端就暴露出来了,文件IO占用的时间使得后面的线程读到的是其他线程的配置,搞得天下大乱。所以,多番研究之后,找到了另一种方式,可以说这种方法比前者优越得多,在多数情况下(保守估计),完全可以取代前面的方法,废话少说,配置如下:

 

      故事的根源就是com.ibatis.sqlmap.client.SqlMapClientBuilder这个类,它是用来从给定的资源(如XML配置文件)中构造一个SqlMapClient的实例的,它旗下有四个静态方法(参考文档),这次用到的这个方法是:

    

public static SqlMapClient buildSqlMapClient(java.io.Reader reader,  java.util.Properties props)

参数中:reader用于读取sql-map-config.xml,这个常见, 而这个props参数则可以用来包含sql-map-config.xml中所需要的参数,它是最关键的,可以将数据库连接所需的URL,用户名,密码用props动态传入。

 

sql-map-config.xml 配置:(省去了前一种方案用到的properties设置)

<sqlMapConfig>

<!-- properties value="misp/migrate/database.properties" -->

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


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

 

 

获得SqlMapClient实例的java代码:

public static SqlMapClient getSqlClient(Properties pro) throws IOException
	{			
		Reader reader = com.ibatis.common.resources.Resources.getResourceAsReader ("misp/migrate/sql-map-config.xml");
		
		sqlClient = SqlMapClientBuilder.buildSqlMapClient(reader,pro);	
		return sqlClient;
		
	}

 

在某个线程需要自己的SqlMapClient时,将URL等信息写入到Properties 里,然后获取一个SqlMapClient实例,然后将这个实例作为变量传入自己需要的地方。避免了多个线程去读同一个连接配置文件带来的尴尬。

 

分享到:
评论

相关推荐

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 详细教程 本教程主要介绍了 Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 的详细教程。下面将详细介绍如何实现 Spring 整合 ...

    ibatis用xml配置文件配置使用

    2. **全局配置文件设置**:在`mybatis-config.xml`中,需要配置数据库连接信息,例如数据源(DataSource)、环境(Environment)、事务管理器(TransactionManager)和SqlSessionFactory。例如: ```xml ...

    装饰模式 切换 ibatis 多数据源

    总结来说,装饰模式在切换iBatis多数据源的应用中,起到了扩展和动态切换的作用,它允许我们在不修改原有数据源实现的基础上,通过组合的方式增加新的功能,实现了在运行时选择不同数据源的目标,同时保持了代码的...

    Spring+ibatis 保留ibatis事务的配置

    给定的XML配置文件展示了如何在Spring中配置ibatis数据源以及ibatis事务管理器。首先,注释掉的`BasicDataSource`部分是用来配置数据源的,这里没有启用,而是选择了使用JNDI数据源。实际生产环境中,通常会使用...

    Ibatis的应用和配置

    2. 动态SQL:Ibatis支持动态SQL,可以在XML映射文件中编写条件语句,实现灵活的查询逻辑,比如根据条件选择性地包含或排除某些WHERE子句。 3. 缓存机制:Ibatis内置了缓存功能,可以在一定程度上提高数据访问效率,...

    ibatis 配置文件详解

    通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。

    IBatis.net 配置各种数据库

    全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , iBatisNet.DataProviders.MySql"/&gt; ;user=...

    SPRING IBATIS 保留IBATIS事务的配置方式

    -- 数据源配置 --&gt; &lt;!-- JNDI数据源配置 --&gt; &lt;value&gt;java:/oracle/payment ``` #### 配置iBatis SqlMapClient 接下来配置了iBatis的SqlMapClient,这里使用的是Spring的`...

    ibatis3应用实例(oracle数据库)

    1. 数据源配置:在Ibatis3中,我们需要配置Oracle的JDBC驱动,并指定数据库连接信息,如URL、用户名和密码等。 2. 映射文件:通过XML映射文件,定义SQL语句及其结果集映射。对于Oracle的特殊语法,如PL/SQL块,...

    ibatis源代码

    2. **Configuration**: 配置对象,存储了所有关于Ibatis的配置信息,包括数据源、映射文件、事务管理等。 3. **Mapper**: Mapper接口和Mapper XML 文件,定义了SQL操作。接口方法对应SQL的执行,XML文件中包含具体...

    ibatis配置文件信息

    - **dataSource**:数据源配置,类型为`SIMPLE`,表示简单的数据源配置。 - **sqlMap**:指定SQL映射文件的位置,在本例中指向`Student.xml`。 ##### 3. Student.xml 文件 `Student.xml` 文件是具体的SQL映射文件...

    spring+ibatis配置实例

    2. `sqlMapConfig.xml`:iBatis的配置文件,定义了数据源、事务管理器以及映射文件的位置。 标签中提到的`springmvc`是Spring的一个模块,Spring MVC提供了模型-视图-控制器架构,用于处理HTTP请求和响应。配置...

    iBATIS开放源代码

    1. **SqlMapConfig.xml**:这是整个iBATIS系统的配置文件,包含了数据源、事务管理器以及其他相关设置。开发者在此文件中定义数据库连接信息,以及映射文件的位置。 2. **Mapper接口/SqlMap.xml**:Mapper接口是...

    ibatis-2 源代码

    - **SqlMapConfig.xml**: 这是iBatis的全局配置文件,包含了数据源、事务管理器等关键信息,定义了SqlMapClient的全局行为。 - **SqlMapClient**: 是iBatis的主要接口,负责执行SQL语句并处理结果集。 - **...

    Spring+Struts+ibatis下配置数据读写分离及事务(一)

    在数据读写分离的环境中,iBATIS可以通过配置不同的数据源,分别连接读库和写库。Spring可以管理和切换这些数据源,使得在执行写操作时使用写库,而在读操作时使用读库。 为了实现上述功能,我们需要集成和配置相关...

    ibatis相关配置

    -- 数据源配置 --&gt; ``` 2. **映射文件(mapper.xml)** 映射文件是定义SQL语句的地方,包括插入、更新、删除、查询等操作。比如: ```xml &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//...

    ibatis配置文件

    这里的`&lt;sqlMapConfig&gt;`是配置文件的根元素,其中包含了一系列的设置和数据源配置。 ### 设置部分 配置文件中的`&lt;settings&gt;`标签包含了多个关键参数,它们控制着ibatis的行为特性: - `cacheModelsEnabled`: 控制...

    springMVC整合ibatis 配置详细

    3. **配置iBatis**:创建SqlSessionFactoryBean,配置数据源、MyBatis的配置文件路径等。例如: ```xml ``` 4. **定义Mapper接口和XML配置**:在iBatis中,定义Mapper接口,并在XML文件中编写SQL语句。...

Global site tag (gtag.js) - Google Analytics