`
evoleht
  • 浏览: 98322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 3.0 +ibatIS2.0 两个数据源的实现

阅读更多

项目变更需求

需要在生产库获得某一表的序列值,以此为主键插入到查询库。

 

修改spring配置,使其链接两个数据源。

以下为两个数据源配置。

 

代码:

spring xml配置,新增加了一个数据源,因为新的数据源只是查询使用,没有做事务处理。

 

<!--spring3 读取配置文件信息-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreResourceNotFound" value="true"/>
        <property name="locations">
            <list>
                <value>classpath*:/configs/config/db.properties</value>
                <value>classpath*:/configs/config/project.properties</value>                 
            </list>
        </property>
    </bean>


    <!-- 数据源配置1 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <!-- Connection Info -->
        <property name="driverClass">
            <value>${jdbc.driver}</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url}</value>
        </property>
        <property name="user">
            <value>${jdbc.username}</value>
        </property>
        <property name="password">
            <value>${jdbc.password}</value>
        </property>
        <property name="minPoolSize">
            <value>0</value>
        </property>
        <property name="maxPoolSize">
            <value>100</value>
        </property>
        <property name="acquireIncrement">
            <value>5</value>
        </property>
        <property name="maxIdleTime">
            <value>10</value>
        </property>
        <property name="maxStatements">
            <value>0</value>
        </property>
		<property name="numHelperThreads">
			<value>3</value>
		</property>
		<!-- 当连接池连接耗尽时,客户端getConnection(),所等待的时间-->
		<property name="idleConnectionTestPeriod" value="120" />
		<!-- 当连接失效时,获得连接的次数,0为无限次(重连)-->
		<property name="acquireRetryAttempts" value="30" />
    </bean>


    <!-- 事务定义 begin-->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--service 里的方法(需要事务的)必须在 service类中以insert,update,delete开头 -->
    <tx:advice id="txAdvice">
        <tx:attributes>
            <tx:method name="insert*"/>
            <tx:method name="update*"/>
            <tx:method name="delete*"/>
			<tx:method name="batch*"/>
            <!--<tx:method name="batch*"/>-->
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <aop:config proxy-target-class="false">
        <aop:advisor
                pointcut="execution(* com.*.*.service.*.*Service.*(..))"
                advice-ref="txAdvice"/>
        <aop:advisor
                pointcut="execution(* com.*.*.*.*.service.*Service.*(..))"
                advice-ref="txAdvice"/>
    </aop:config>
    <!-- 事务定义 end-->


    <bean id="sqlMapClient"
          class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation"
                  value="classpath:configs/ibatis/SqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean> 
    
    <!-- *************************第二个数据源配置************************************************ --> 
    <!-- 数据源配置2 -->
    <bean id="dataSourceDB2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <!-- Connection Info -->
        <property name="driverClass">
            <value>${jdbc.driver}</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url2}</value>
        </property>
        <property name="user">
            <value>${jdbc.username2}</value>
        </property>
        <property name="password">
            <value>${jdbc.password2}</value>
        </property>
        <property name="minPoolSize">
            <value>0</value>
        </property>
        <property name="maxPoolSize">
            <value>100</value>
        </property>
        <property name="acquireIncrement">
            <value>5</value>
        </property>
        <property name="maxIdleTime">
            <value>10</value>
        </property>
        <property name="maxStatements">
            <value>0</value>
        </property>
		<property name="numHelperThreads">
			<value>3</value>
		</property>
		<!-- 当连接池连接耗尽时,客户端getConnection(),所等待的时间-->
		<property name="idleConnectionTestPeriod" value="120" />
		<!-- 当连接失效时,获得连接的次数,0为无限次(重连)-->
		<property name="acquireRetryAttempts" value="30" />
    </bean>

    <bean id="sqlMapClientDB2"
          class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation"
                  value="classpath:configs/ibatis/SqlMapConfigDB2.xml"/>
        <property name="dataSource" ref="dataSourceDB2"/>
    </bean> 
    
    <!-- 总体dao层 sqlMapClient提供数据库1链接,sqlMapClientDB2提供数据库2链接 -->
    <bean id="ibatisEntityDao"
          class="com.fenghuoyun.dataintegration.common.ibatis.IBatisEntityDaoImpl">
          <property name="sqlMapClient" ref="sqlMapClient"/>
          <property name="sqlMapClientDB2" ref="sqlMapClientDB2"/>
    </bean> 

 

ibatIS 基础 dao :

@SuppressWarnings("unchecked")
public class IBatisEntityDaoImpl extends SqlMapClientDaoSupport implements
        IEntityDao {
	
	protected SqlMapClient sqlMapClientDB2;//第二个数据库
	
    public SqlMapClient getSqlMapClientDB2() {
		return sqlMapClientDB2;
	}

	public void setSqlMapClientDB2(SqlMapClient sqlMapClientDB2) {
		this.sqlMapClientDB2 = sqlMapClientDB2;
	}
	
	
	public <T> T viewEntityDB2(String xmlId, Object id) throws SQLException {
        T t = (T)sqlMapClientDB2.queryForObject(xmlId, id);
        return t;
       }
    public <T> T viewEntity(String xmlId, Object id) {
        T t = (T) getSqlMapClientTemplate().queryForObject(xmlId, id);
        return t;
    }


}

 使用的时候调用不同的方法去两个数据库查询数据。

 

dao为测试,且第二个数据源没有事务处理。

 

经过测试,成功。

分享到:
评论

相关推荐

    Spring3.0+Ibatis+Orace全注解开发

    该文件是一个完整的Spring3.0+Ibatis+Oracle全注解式开发项目,里面详细的介绍了注解的使用,注解描述很全,下载就可以导入到您的myeclipse中运行,很好的Spring注解开发小项目

    spring3.0,ibatis2.0,dwr2.0 框架整合

    iBatis与Spring整合后,可以通过Spring的DAO支持来管理数据库事务,实现数据访问的事务控制。使用MyBatis-Spring库可以轻松地将这两个框架集成在一起,使得数据访问更加方便。 第三,Direct Web Remoting (DWR) 2.0...

    spring3.0+ibatis 集成实例

    Spring 3.0 和 iBatis 的集成是一个常见的企业级应用开发模式,它结合了Spring的强大依赖注入(DI)和面向切面编程(AOP)能力与iBatis灵活的SQL映射机制,实现了业务逻辑层与数据访问层的分离,提高了代码的可维护...

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 记得改数据库访问地址以及数据库登录用户名密码 项目访问路径 localhost:8080/SSI_Demo1 一个简单的例子(Oracle数据库增删改查...

    Struts1.2+Spring2.0+Ibatis2.0整合小项目

    Struts1.2、Spring2.0和Ibatis2.0是Java开发中经典的三大开源框架,它们在企业级应用开发中广泛使用。这个小项目是将这三个框架整合在一起,以实现一个简单但完整的功能。下面我们将深入探讨这些知识点。 **Struts...

    spring3.0 + ibatis+jquery+注解建立dao、service类

    标题 "spring3.0 + ibatis+jquery+注解建立dao、service类" 提供了我们讨论的核心技术栈,这是构建一个基于Java的Web应用程序的常见组合。Spring框架是核心,用于依赖注入(DI)和面向切面编程(AOP),iBatis则作为...

    Spring3.0+Ibatis+Oracle全注解开发详细过程

    总之,Spring 3.0+iBATIS+Oracle的组合提供了强大的功能,帮助开发者快速、高效地构建健壮的Java Web应用。通过注解,你可以实现组件的自动化管理和灵活的配置,同时利用iBATIS简化数据库访问,使得代码更加简洁,...

    struts2.1.8+spring3.0+ibatis2.3优雅框架

    5. **整合Spring与iBatis**:配置Spring的数据源和SqlSessionFactory,通过`@Autowired`注解将SqlSessionTemplate注入到DAO中。 这种整合方式的优势在于: - **松耦合**:每个框架都专注于自己的职责,降低了组件...

    spring mvc3.0+ibatis3.0(基于oracle) Demo

    折腾了好几天,终于从零开始把spring mvc 3.0 + ibatis 3.0 (基于oracle)的Demo完全跑通了。Demo中有不少注释,使用的jar包基本是最精简的了。留着做个备用,也给大家一个参考!

    spring2.0+struts2.0+ibatis2.3完整整和

    "spring2.0+struts2.0+ibatis2.3完整整合"是一个经典的Java Web开发组合,这个组合在过去的许多年里被广泛应用,为开发者提供了强大的功能和灵活的架构。 **Spring框架(2.0版本)** Spring是一个全面的后端应用...

    spring+ibatis+struts2.0 的jar

    包含了spring ibatis struts2.0整合需要的jar包 有需要的就下吧

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第二部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH

    struts2+spring3+ibatis项目整合案例

    同时配置数据源、事务管理器以及iBATIS的相关配置,如SqlSessionFactory。 3. 集成iBATIS:创建Mapper接口和对应的XML配置文件,定义SQL语句。Service层调用DAO层的方法,实现业务逻辑。 4. 整合测试:编写JUnit...

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第一部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成

    Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理

    本项目以"Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理"为主题,旨在为初学者提供一个全面理解这些技术集成使用的实例。下面将详细阐述这四个关键组件及其在用户管理系统中的作用。 首先,Spring框架是Java...

    struts1+spring2.0+ibatis整合实例

    3. 配置iBatis的sqlMapConfig.xml,定义数据源、事务管理器以及SQL映射文件。 4. 编写Action类,注入EmpService,调用其提供的业务方法。 5. 创建EmpService和对应的DAO类,实现与数据库的交互。 6. 编写JSP页面,...

    Spring.net + iBatis.net + asp.net MVC 整合文档

    关于Spring.net + iBatis.net + asp.net MVC 整合的文档,值!

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    本系统是应用于企业会议管理的系统,实现自动管理会议室,及时准确得知会议室空闲、预定情况,规范公司会议管理,实现公司信息资源在各部门之间快速有效传递,避免资源的冲突。提高了会议室的使用率,节省会议组织者...

    struts2+spring+Ibatis框架包

    它允许开发者直接编写SQL,然后通过XML或注解方式配置到iBatis,从而实现数据操作。iBatis与Spring的结合,可以让Spring管理SqlSession,提供事务控制,并且可以利用Spring的DAO支持,简化开发过程。 在"ssi_jar"这...

Global site tag (gtag.js) - Google Analytics