spring-boot 2.3.3.RELEASE 整合oracle、mysql多数据源

spring-boot-multiple-data-sources

  • spring-boot 2.3.3.RELEASE 整合oracle、mysql多数据源
  • 主数据源配置为web(oracle),其他为从数据源(oracle、mysql)
  • 单元测试通过,支持查询,更新
  • 数据源连接池由默认com.zaxxer.hikari.HikariDataSource改为org.apache.tomcat.jdbc.pool.DataSource
  • tomcat连接池默认配置org.apache.tomcat.jdbc.pool.PoolProperties

码云地址

application.yml

spring:
  datasource:
    web:
      driver-class-name: oracle.jdbc.OracleDriver
      url: jdbc:oracle:thin:@192.168.92.100:1521:orcl
      username: web
      password: 123456
      #在连接池启动时要建立的连接数
      initialSize: 5
      #连接池中的最大活跃连接数
      maxActive: 20
      #连接池里始终应该保持的最小连接数(用于DBCP和Tomcat连接池)
      minIdle: 5
      #连接池中的最大空闲连接数
      maxIdle: 10
      #连接池在等待返回连接时,最长等待多少毫秒再抛出异常
      maxWait: 30000
      #从连接池中借用连接时是否要进行测试
      testOnBorrow: true
      #在将连接归还到连接池时是否要进行测试
      testOnReturn: false
      #在连接空闲时是否要进行测试
      testWhileIdle: true
      #在两次空闲连接验证、弃用连接清理和空闲池大小调整之间睡眠的毫秒数
      timeBetweenEvictionRunsMillis: 5000
      #一个空闲连接被空闲连接释放器(如果存在的话)优雅地释放前,最短会在连接池里停 留多少毫秒。
      minEvictableIdleTimeMillis: 300000
      #在连接池里的连接返回给调用者或连接池时,要执行的验证 SQL 查询
      #客户端在使用一个无效的连接时会先对该连接进行测试,如果发现该连接已经无效,则重新从连接池获取有效数据库连接来使用
      validation-query: select 1 from dual
      #执行连接验证的间隔时间,单位为毫秒
      validationInterval: 30000
      #被弃用的连接在到达弃用超时后是否应该被移除
      removeAbandoned: true
      #连接在多少秒后应该考虑弃用
      removeAbandonedTimeout: 120
      #连接的默认事务隔离级别,未设置(2?)
      #defaultTransactionIsolation: -1
    deploy:
      driver-class-name: oracle.jdbc.OracleDriver
      url: jdbc:oracle:thin:@192.168.92.100:1521:orcl
      username: deploy
      password: 123456
      initialSize: 5
      maxActive: 20
      minIdle: 5
      maxIdle: 10
      maxWait: 30000
      testOnBorrow: true
      testOnReturn: false
      testWhileIdle: true
      timeBetweenEvictionRunsMillis: 5000
      minEvictableIdleTimeMillis: 300000
      validation-query: select 1 from dual
      validationInterval: 30000
      removeAbandoned: true
      removeAbandonedTimeout: 120
    flower:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/flower?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password:
      initialSize: 5
      maxActive: 20
      minIdle: 5
      maxIdle: 10
      maxWait: 30000
      testOnBorrow: true
      testOnReturn: false
      testWhileIdle: true
      timeBetweenEvictionRunsMillis: 5000
      minEvictableIdleTimeMillis: 300000
      validation-query: select 1
      validationInterval: 30000
      removeAbandoned: true
      removeAbandonedTimeout: 120
  mvc:
    view:
      prefix: classpath:templates/
      suffix: .html

server:
  port: 8080
  servlet:
    context-path: /api/demo

mybatisconfig

import java.util.Properties;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.ibatis.session.AutoMappingBehavior;
import org.apache.ibatis.session.AutoMappingUnknownColumnBehavior;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.LocalCacheScope;
import org.apache.ibatis.type.JdbcType;

/**
 * @author ylm-sigmund
 * @since 2020/8/25 21:55
 */
public class DefaultMyBatisConfig {

    public static final String ORACLE = "oracle";
    public static final String MYSQL = "mysql";

    /**
     * mybatis配置数据
     * 
     * @param databaseId
     *            databaseId
     * @return Configuration
     */
    public static Configuration getDefaultConfiguration(String databaseId) {
        Configuration configuration = new Configuration();
        setSettings(configuration);
        setVariables(configuration);
        configuration.setDatabaseId(databaseId);
        return configuration;
    }

    private static void setSettings(Configuration configuration) {
        configuration.setCacheEnabled(true);
        configuration.setLazyLoadingEnabled(true);
        configuration.setMultipleResultSetsEnabled(true);
        configuration.setUseColumnLabel(true);
        configuration.setUseGeneratedKeys(false);
        configuration.setAutoMappingBehavior(AutoMappingBehavior.PARTIAL);
        configuration.setAutoMappingUnknownColumnBehavior(AutoMappingUnknownColumnBehavior.WARNING);
        configuration.setDefaultExecutorType(ExecutorType.SIMPLE);
        configuration.setDefaultStatementTimeout(30);
        configuration.setDefaultFetchSize(200);
        configuration.setSafeRowBoundsEnabled(false);
        configuration.setMapUnderscoreToCamelCase(false);
        configuration.setLocalCacheScope(LocalCacheScope.SESSION);
        configuration.setJdbcTypeForNull(JdbcType.OTHER);
        configuration.setLazyLoadTriggerMethods(
            Stream.of("equals", "clone", "hashCode", "toString").collect(Collectors.toSet()));
    }

    /**
     * 设置mybatis全局变量
     * 
     * @param configuration
     *            configuration
     */
    private static void setVariables(Configuration configuration) {
        Properties properties = new Properties();
        properties.setProperty("web", "web.");
        configuration.setVariables(properties);
    }
}

ojdbc6jar获取

IDEA mysql&oracle mybatis-generator plugin插件 自动生成实体类和mapper.xml实战

console提示Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
  • driver-class-name: com.mysql.jdbc.Driver
  • 改为
  • com.mysql.cj.jdbc.Driver
console提示Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation.
  • driver-class-name: oracle.jdbc.driver.OracleDriver
  • 改为
  • oracle.jdbc.OracleDriver

资料参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值