zoukankan      html  css  js  c++  java
  • 多数据源切换

     第一数据源是mysql 

    1 connection.url=jdbc:mysql://127.0.0.1:3306/bmh?useUnicode=true&characterEncoding=utf8
    2 connection.username=root
    3 connection.password=bNVOqb7WKLX5Bjnw+LMv92taj25KOxDimXxILPQjw42wgv+1lHzOH8kr97xDwWdhpY67QuYCS7sWN4W46YbkFA==
    datasource.properties
    <?xml version="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-4.2.xsd
              http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
    
        <!-- JNDI方式配置数据源 -->
        <!--<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="${jndiName}"></property> </bean> -->
        <!-- 数据源 -->
        <!--see https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_DruidDataSource%E5%8F%82%E8%80%83%E9%85%8D%E7%BD%AE -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <!-- 基本属性 url、user、password -->
            <property name="url" value="${connection.url}"/>
            <property name="username" value="${connection.username}"/>
            <property name="password" value="${connection.password}"/>
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    
    
            <!-- 初始化连接大小、连接池最小空闲、最大使用连接数量 -->
            <property name="initialSize" value="${druid.initialSize}"/>
            <property name="minIdle" value="${druid.minIdle}"/>
            <property name="maxActive" value="${druid.maxActive}"/>
            <!-- 获取连接等待超时的时间 -->
            <property name="maxWait" value="${druid.maxWait}"/>
    
            <!-- 打开PSCache,并且指定每个连接上PSCache的大小 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。 -->
            <property name="poolPreparedStatements" value="${druid.poolPreparedStatements}"/>
            <property name="maxPoolPreparedStatementPerConnectionSize"
                      value="${druid.maxPoolPreparedStatementPerConnectionSize}"/>
    
            <!-- 检测连接是否有效sql,要求是一个查询语句,如果为null,则后三个参数无效。 -->
            <property name="validationQuery" value="${druid.validationQuery}"/>
            <!-- 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
            <property name="testWhileIdle" value="${druid.testWhileIdle}"/>
            <!-- 申请连接时执行 validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
            <property name="testOnBorrow" value="${druid.testOnBorrow}"/>
            <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
            <property name="testOnReturn" value="${druid.testOnReturn}"/>
    
            <!-- 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}"/>
            <!-- 一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}"/>
    
            <!-- 打开removeAbandoned功能 -->
            <property name="removeAbandoned" value="true"/>
            <property name="removeAbandonedTimeout" value="1800"/>
            <property name="logAbandoned" value="true"/>
    
            <!-- 配置监控统计拦截的filters -->
            <property name="filters" value="${druid.filters}"/>
    
            <!-- 慢查询sql打印 -->
            <property name="connectionProperties" value="${druid.connectionProperties}"/>
        </bean>
    
    
        <bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="properties">
                <props>
                    <prop key="SQL Server">sqlserver</prop>
                    <prop key="DB2">db2</prop>
                    <prop key="Oracle">oracle</prop>
                    <prop key="MySQL">mysql</prop>
                </props>
            </property>
        </bean>
        <bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
            <property name="properties" ref="vendorProperties"/>
        </bean>
    
    
        <bean id="sqlSessionFactory" class="com.ylzinfo.eva.core.persistence.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="mapperLocations">
                <list>
                    <value>classpath:/mappings/**/*.xml</value>
                </list>
            </property>
            <property name="plugins">
                <bean class="com.ylzinfo.framework.sys.web.mybatis.MybatisSpringPageInterceptor"></bean>
            </property>
            <!-- 数据库id标识 -->
            <property name="databaseIdProvider" ref="databaseIdProvider"></property>
            <!-- 注册类型 -->
            <property name="typeAliasesPackage" value="com.ylzinfo.**.domain"></property>
    
        </bean>
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.ylzinfo.**.dao"></property>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>
    
        <!--事务管理器配置 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
    
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="query*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="read*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="list*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="count*" propagation="REQUIRED" read-only="true"/>
    
                <tx:method name="add*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="create*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    
                <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="modify*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="edit*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    
                <tx:method name="del*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="remove*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    
                <tx:method name="grant*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="un*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    
                <!-- <tx:method name="*" propagation="REQUIRED" read-only="true"/>-->
            </tx:attributes>
        </tx:advice>
    
        <aop:config>
            <!-- 只对业务逻辑层实施事务 -->
            <aop:pointcut id="pointcut"
                          expression="execution(* com.ylzinfo..service..*Impl.*(..)) or execution(* com.ylzinfo..task..*Impl.*(..))"/>
            <aop:advisor id="advisor" advice-ref="txAdvice" pointcut-ref="pointcut"/>
        </aop:config>
    </beans>
    spring-mybatis.xml

    第二数据源oracle

     1 #第二数据源
     2 oracle.jdbc.driver=oracle.jdbc.OracleDriver
     3 oracle.mysql.jdbc.url=jdbc:oracle:thin:@127.0.0.2:1521/SHBX
     4 oracle.myjdbc.username=shbxcard
     5 oracle.jdbc.password=shbxcard
     6 
     7 
     8 #第三数据源
     9 1oracle.jdbc.driver=oracle.jdbc.OracleDriver
    10 1oracle.mysql.jdbc.url=jdbc:oracle:thin:@127.0.0.3:1521/ZXCSORCL
    11 1oracle.myjdbc.username=nxsi_ykt
    12 1oracle.jdbc.password=YKT@SBH61093
    oracle-db.properties
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
     3 <configuration>
     4 
     5     <properties resource="oracle-db.properties" />
     6     
     7      <settings>
     8     
     9         <!-- 设置自动驼峰转换         -->
    10         <setting name="mapUnderscoreToCamelCase" value="true" />
    11 
    12         <!-- 开启懒加载 -->        
    13          <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。默认:true -->
    14       <setting name="aggressiveLazyLoading" value="false" />
    15 
    16     </settings>
    17 
    18     <!-- 别名定义 -->
    19     <typeAliases>
    20         <package name="com.ylzinfo.socialsecurity.domain.model" />
    21     </typeAliases>
    22 
    23 
    24     <!--配置environment环境 -->
    25     <environments default="development">
    26         <!-- 环境配置1,每个SqlSessionFactory对应一个环境 -->
    27         <environment id="development">
    28             <transactionManager type="JDBC" />
    29             <dataSource type="UNPOOLED">
    30                 <property name="driver" value="${oracle.jdbc.driver}" />
    31                 <property name="url" value="${oracle.mysql.jdbc.url}" />
    32                 <property name="username" value="${oracle.myjdbc.username}" />
    33                 <property name="password" value="${oracle.jdbc.password}" />
    34             </dataSource>
    35         </environment>
    36 
    37 
    38     </environments>
    39 
    40     <!-- 映射文件,mapper的配置文件 -->
    41     <mappers>
    42         <!--直接映射到相应的mapper文件 -->
    43         <mapper resource="mappings/callable/AppGthdDao.xml" />
    44         <mapper resource="mappings/callable/AppGtdjDao.xml" />
    45         <mapper resource="mappings/socialsecurity/ABA1Mapper.xml" />
    46         <mapper resource="mappings/socialsecurity/CBCXMapper.xml" />
    47         <mapper resource="mappings/socialsecurity/ExpendsQueryMapper.xml" />
    48         <mapper resource="mappings/socialsecurity/BC18Mapper.xml" />
    49         <mapper resource="mappings/socialsecurity/SocialCardInfoMapper.xml" />
    50         <mapper resource="mappings/callable/SocialCardBindMapper.xml" />
    51         <mapper resource="mappings/socialsecurity/AC01Mapper.xml" />
    52         <mapper resource="mappings/callable/AppCbdjYLMapper.xml" />
    53         <mapper resource="mappings/callable/AppCbhdYLMapper.xml" />
    54     </mappers>
    55 
    56 
    57 </configuration>  
    mybatis-config2
     1 package com.ylzinfo.socialsecurity.util;
     2 
     3 import org.apache.ibatis.io.Resources;
     4 import org.apache.ibatis.session.SqlSession;
     5 import org.apache.ibatis.session.SqlSessionFactory;
     6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     7 
     8 import java.io.IOException;
     9 import java.io.Reader;
    10 
    11 /**
    12  * description
    13  * created         2019/9/3 14:29
    14  *
    15  * @version --添加版本信息
    16  * @author hoje
    17  * @since Version 1.0
    18  */
    19 public class SqlSessionFactoryUtil {
    20 
    21     private static SqlSessionFactory sessionFactory;
    22     static {
    23         Reader reader =null;
    24         try {
    25             reader= Resources.getResourceAsReader("mybatis-config2.xml");
    26             sessionFactory =new SqlSessionFactoryBuilder().build(reader,"development");
    27         } catch (IOException e) {
    28             e.printStackTrace();
    29         }finally {
    30             try {
    31                 reader.close();
    32             } catch (IOException e) {
    33                 e.printStackTrace();
    34             }
    35         }
    36     }
    37     public  static SqlSession getSession(){
    38         return  sessionFactory.openSession();
    39     }
    40 }
    SqlSessionFactoryUtil

    填写映射文件

    第三数据源

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
     3 <configuration>
     4 
     5     <properties resource="oracle-db.properties" />
     6     
     7      <settings>
     8     
     9         <!-- 设置自动驼峰转换         -->
    10         <setting name="mapUnderscoreToCamelCase" value="true" />
    11 
    12         <!-- 开启懒加载 -->        
    13          <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。默认:true -->
    14       <setting name="aggressiveLazyLoading" value="false" />
    15 
    16     </settings>
    17 
    18     <!-- 别名定义 -->
    19     <typeAliases>
    20         <package name="com.ylzinfo.socialsecurity.domain.model" />
    21     </typeAliases>
    22 
    23 
    24     <!--配置environment环境 -->
    25     <environments default="development">
    26         <!-- 环境配置1,每个SqlSessionFactory对应一个环境 -->
    27         <environment id="development">
    28             <transactionManager type="JDBC" />
    29             <dataSource type="UNPOOLED">
    30                 <property name="driver" value="${1oracle.jdbc.driver}" />
    31                 <property name="url" value="${1oracle.mysql.jdbc.url}" />
    32                 <property name="username" value="${1oracle.myjdbc.username}" />
    33                 <property name="password" value="${1oracle.jdbc.password}" />
    34             </dataSource>
    35         </environment>
    36 
    37 
    38     </environments>
    39 
    40     <!-- 映射文件,mapper的配置文件 -->
    41     <mappers>
    42         <!--直接映射到相应的mapper文件 -->
    43         <mapper resource="mappings/callable/AppCbdjYBMapper.xml" />
    44         <mapper resource="mappings/callable/AppCbhdYBMapper.xml" />
    45     </mappers>
    46 
    47 
    48 </configuration>  
    mybatis-config3
     1 package com.ylzinfo.socialsecurity.util;
     2 
     3 import org.apache.ibatis.io.Resources;
     4 import org.apache.ibatis.session.SqlSession;
     5 import org.apache.ibatis.session.SqlSessionFactory;
     6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     7 
     8 import java.io.IOException;
     9 import java.io.Reader;
    10 
    11 /**
    12  * description
    13  * created         2019/9/3 14:29
    14  *
    15  * @version --添加版本信息
    16  * @author hoje
    17  * @since Version 1.0
    18  */
    19 public class SqlSessionFactoryUtil3 {
    20 
    21     private static SqlSessionFactory sessionFactory;
    22     static {
    23         Reader reader =null;
    24         try {
    25             reader= Resources.getResourceAsReader("mybatis-config3.xml");
    26             sessionFactory =new SqlSessionFactoryBuilder().build(reader,"development");
    27         } catch (IOException e) {
    28             e.printStackTrace();
    29         }finally {
    30             try {
    31                 reader.close();
    32             } catch (IOException e) {
    33                 e.printStackTrace();
    34             }
    35         }
    36     }
    37     public  static SqlSession getSession(){
    38         return  sessionFactory.openSession();
    39     }
    40 }
    SqlSessionFactoryUtil3

    如何调用

    以调用存储过程为例

       SqlSession session = SqlSessionFactoryUtil.getSession();
                AppCbdjYLMapper AppCbdjYLMapper = session.getMapper(AppCbdjYLMapper.class);
                Map map = new HashMap();
                map.put("is_aab301", aab301);
                map.put("is_aac002", aac002);
                map.put("is_aac003", aac003);
                map.put("is_aae006", aae006);
                map.put("is_aac067", aac067);
                AppCbdjYLMapper.appcbdjyl(map);
                String info;
                info = (String) map.get("os_errinfo");
      session.commit();//这里一定要提交,不然数据进不去数据库中
                session.close();
    View Code
  • 相关阅读:
    简单介绍数据流动的控制
    数据再寄存器中的暂时保存
    八位三态数据通路控制器的逻辑电路设计讲解
    什么是同步有限状态机???
    verilog逻辑复制
    流水线经典讲解!!!!!
    流水线(pipe-line)简介
    总线(BUS)和总线操作
    多路选择器(multiplexer)简介
    使用telnet发送HTTP请求
  • 原文地址:https://www.cnblogs.com/hoje/p/11842900.html
Copyright © 2011-2022 走看看