Spring配置多个数据源

来源:互联网 发布:地产网络炒作方案 编辑:程序博客网 时间:2024/05/16 14:54

在开发当中,有时候需要的数据源不止一个,所以就需要配置数据源,也就是说需要不同数据库里的数据。

废话少说,转入正题!

一、框架SSI(Struts+Spring+Ibatis)

二、主要的就是Spring的配置文件,其他的都是次要的

三、我是将Spring的配置文件分开了,你只要参考我的改一下就行了

四、spring的配置文件

1applicationContext_bean.xml

<?xmlversion="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"

      xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="

       http://www.springframework.org/schema/beans

      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

       http://www.springframework.org/schema/tx

      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

       http://www.springframework.org/schema/aop

      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

 <!-- -->   

      //.红色部分为重点,这里是核心,配置两个dateSource

      <beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

           <propertyname="jndiName">

                 <value>vspn53JNDI</value>

           </property>

      </bean>

     

      <bean id="dataSource2"class="org.springframework.jndi.JndiObjectFactoryBean">

           <propertyname="jndiName">

                 <value>sxJNDI</value>

           </property>

      </bean>

 

      <!--class="org.apache.commons.dbcp.BasicDataSource"

      <bean id="dataSource"

           class="org.springframework.jdbc.datasource.DriverManagerDataSource">

           <propertyname="driverClassName">

                 <value>oracle.jdbc.driver.OracleDriver

                 </value>

           </property>

           <property name="url">

                 <value>jdbc:oracle:thin:@140.100.100.218:1521:oracle

                 </value>

           </property>

           <propertyname="username">

                 <value>vspn54</value>

           </property>

           <propertyname="password">

                 <value>vspn54</value>

           </property>

      </bean>

-->

      <bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

           <propertyname="configLocation">

                 <value>classpath:sqlmap/sqlmap_base.xml</value>

           </property>

           <propertyname="dataSource">

                 <reflocal="dataSource" />

           </property>

      </bean>

     

      <bean id="sqlMapClient2"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

           <propertyname="configLocation">

                 <value>classpath:sqlmap/sqlmap_base.xml</value>

           </property>

           <propertyname="dataSource">

                 <reflocal="dataSource2" />

           </property>

      </bean>

     

      <bean id="transactionManager"

           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

           <propertyname="dataSource" ref="dataSource"></property>

      </bean>

      <!-- 支持@Transactional 标记 -->

      <tx:annotation-driventransaction-manager="transactionManager" />

      <!-- 声明式事务管理-->

    <beanid="baseTransactionProxy"

        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true">

        <propertyname="transactionManager"ref="transactionManager"></property>

        <propertyname="transactionAttributes">

            <props>

                <propkey="insert*">PROPAGATION_REQUIRED</prop>           

                <propkey="update*">PROPAGATION_REQUIRED</prop>          

                <propkey="delete*">PROPAGATION_REQUIRED</prop>

                <propkey="get*">PROPAGATION_REQUIRED,readOnly</prop>

            </props>

        </property>

    </bean>

     

</beans>

2applicationContext_dao.xml

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"

      xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="

      http://www.springframework.org/schema/beans

      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

       http://www.springframework.org/schema/tx

       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

      http://www.springframework.org/schema/aop

      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

      <!-- 用户登陆 -->

      <bean id="loginDao"class="com.vstsoft.da.system.dao.imp.LoginDaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient" />

      </bean>

     

      <!-- 代码 -->

      <bean id="ans01Dao"class="com.vstsoft.da.system.dao.imp.Ans01DaoImpl">

           <property name="sqlMapClient"ref="sqlMapClient"/>

      </bean>

      <bean id="ans03Dao"class="com.vstsoft.da.system.dao.imp.Ans03DaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient" />

      </bean>

     

      <bean id="jianDao"class="com.vstsoft.da.jian.dao.impl.JianDaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient"/>

      </bean>

      //这里调用的是dateSource2的数据

      <beanid="zujianDao"class="com.vstsoft.da.jian.dao.impl.ZuJianDaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient2"/>

      </bean>

      <bean id="juanDao"class="com.vstsoft.da.juan.dao.impl.JuanDaoImpl">

           <property name="sqlMapClient"ref="sqlMapClient"/>

      </bean>

      <!-- 代码 -->

      <bean id="heDao"class="com.vstsoft.da.he.dao.impl.HeDaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient"/>

      </bean>

      <bean id="jianSuoDao"class="com.vstsoft.da.jiansuo.dao.impl.JianSuoDaoImpl">

           <propertyname="sqlMapClient" ref="sqlMapClient"/>

      </bean>

     

</beans>

//这里意思很明显,调用base中声明的dateSource,在这里区分那个dao需要调用那个数据源,在这里注意看黄色标记的部分

3applicationContext_manage.xml

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"

      xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="

      http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

       http://www.springframework.org/schema/tx

      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

      http://www.springframework.org/schema/aop

       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

 

      <!-- 用户登陆 -->

      <bean id="loginManage"class="com.vstsoft.da.system.manage.imp.LoginManageImpl">

           <propertyname="loginDao">

                 <refbean="loginDao" />

           </property>

      </bean>   

      <!-- 代码 -->

      <bean id="ans01Manage" class="com.vstsoft.da.system.manage.imp.Ans01ManageImpl">

           <propertyname="ans01Dao">

                 <refbean="ans01Dao" />

           </property>

      </bean>   

      <!-- 代码 -->

      <bean id="ans03Manage"class="com.vstsoft.da.system.manage.imp.Ans03ManageImpl">

           <property name="ans03Dao">

                 <refbean="ans03Dao" />

           </property>

      </bean>   

      <!-- 代码 -->

      <bean id="jianManage"parent="baseTransactionProxy">

           <propertyname="target">

                 <beanclass="com.vstsoft.da.jian.manage.impl.JianManageImpl">

                      <propertyname="jianDao">

                      <ref bean="jianDao"/>

                      </property>

                      <propertyname="zujianDao">

                      <refbean="zujianDao" />

                      </property>

                      <propertyname="ans03Dao">

                            <refbean="ans03Dao"/>

                      </property>

                      <propertyname="juanDao">

                            <refbean="juanDao" />

                      </property>

                      <propertyname="heDao">

                            <refbean="heDao" />

                      </property>

                 </bean>

           </property>

      </bean>

      <!-- 代码 -->

      <bean id="juanManage"parent="baseTransactionProxy">

           <propertyname="target">

                 <beanclass="com.vstsoft.da.juan.manage.impl.JuanManageImpl">

                      <propertyname="jianDao">

                            <refbean="jianDao" />

                      </property>

                      <propertyname="juanDao">

                            <refbean="juanDao" />

                      </property>

                      <propertyname="heDao">

                            <refbean="heDao" />

                      </property>

                      <propertyname="ans03Dao">

                            <refbean="ans03Dao"/>

                      </property>

                 </bean>

           </property>

      </bean>

      <!-- 代码 -->

      <bean id="heManage"parent="baseTransactionProxy">

           <propertyname="target">

                 <beanclass="com.vstsoft.da.he.manage.impl.HeManageImpl">

                      <propertyname="heDao">

                      <refbean="heDao" />

                      </property>

                      <propertyname="juanDao">

                            <refbean="juanDao" />

                      </property>

                      <propertyname="jianDao">

                            <refbean="jianDao" />

                      </property>

                 </bean>

           </property>

      </bean>

      <bean id="jianSuoManage"class="com.vstsoft.da.jiansuo.manage.impl.JianSuoManageImpl">

           <propertyname="jianSuoDao">

                 <ref bean="jianSuoDao"/>

           </property>

      </bean>

</beans>

//这个配置文件没有什么特别需要介绍的,就是给manage配置需要调用的dao

五、sqlMap的配置文件

      1、sqlmap_base.xml

      <?xmlversion="1.0"encoding="UTF-8"?>

 

<!DOCTYPEsqlMapConfigPUBLIC"-//ibatis.apache.org//DTDSQL Map Config 2.0//EN"

    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

 

<sqlMapConfig>

//这里没什么特别,就是加载一些需要用的sqlmap

   <!-- 按文件名的顺序依次添加 -->

   <sqlMapresource="sqlmap/sqlmap_bean.xml"/>

   <sqlMapresource="sqlmap/sqlmap_system.xml"/>

   <sqlMapresource="sqlmap/sqlmap_jian.xml"/>

   <sqlMapresource="sqlmap/sqlmap_juan.xml"/>

   <sqlMapresource="sqlmap/sqlmap_he.xml"/>

   <sqlMapresource="sqlmap/sqlmap_jiansuo.xml"/>

   <sqlMapresource="sqlmap/sqlmap_jian_zujian.xml"/>

</sqlMapConfig>

2、其他的sqlmap都没什么特别,重点说一下最后一个sqlmap_jian_zujian.xml

<?xmlversion="1.0"encoding="UTF-8"?>

 

<!DOCTYPEsqlMapPUBLIC"-//ibatis.apache.org//DTDSQL Map 2.0//EN"

   "http://ibatis.apache.org/dtd/sql-map-2.dtd">

 

<sqlMap>

   //这里的resultMap是指,将对方的库里的数据转换成我们库里对应的表,意思也就是说

   比如对方有个表将and00,我们需要将对方的数据转换成我们的数据,我们用and01接收查出的数据

   <resultMapid="and01Result"class="and01">

  

//这下面的操作就是将对方数据库表中的字段,转换成我们库里对应表的字段,这个你懂得!

     <!-- 区县编码 -->

     <resultcolumn="QXBM"property="cnd112"jdbcType="VARCHAR"/>

    

     <!-- 单位代码 -->

     <resultcolumn="DWDM"property="cnd102"jdbcType="VARCHAR"/>

    

     <!-- 单位名称 -->

     <resultcolumn="DWMC"property="cnd103"jdbcType="VARCHAR"/>

    

     <!-- 单位简称 -->

     <resultcolumn="DWJC"property="cnd104"jdbcType="VARCHAR"/>

    

     <!-- 社会保险登记证号 -->

     <resultcolumn="DJZH"property="cnd105"jdbcType="VARCHAR"/>

    

     <!-- 身份证号 -->

     <resultcolumn="BZHM"property="cnd106"jdbcType="VARCHAR"/>

    

     <!-- 电脑序号 -->

     <resultcolumn="BXH"property="cnd116"jdbcType="VARCHAR"/>

    

     <!-- 姓名 -->

     <resultcolumn="XM"property="cnd107"jdbcType="VARCHAR"/>

    

     <!-- 经办人姓名 -->

     <resultcolumn="USERNAME"property="cnd113"jdbcType="VARCHAR"/>

    

     <!-- 办理日期 -->

     <resultcolumn="BLRQ"property="cnd114"jdbcType="DATE"/>

    

   </resultMap>

 

   <!-- 查询四险中的数据 -->

   <selectid="sx"resultMap="and01Result">

     select * from sysdalog

   </select>

</sqlMap>

六、将这些东西配置好,这个加载多个数据源的操作就完成了,Action中的代码就不贴了,很简单,用dao直接调用就行了,在配置文件中都已经配置好了,所以不需要费多大劲!

七、好了,这就是整个配置过程,希望对你有所帮助,谢谢!

 

 

 

                                           菗煙①蔟

原创粉丝点击