栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot适配不同数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot适配不同数据库

上一次写了一个springboot多数据源的文章,刚好最近又要适配国产化,我在想能不能直接拿过来改改,没想到还真可以,其他的配置我就不贴了,直接看我上一篇文章,那么话不多说,接下来把改动代码贴上来看效果。

配置文件
spring:
  #数据库配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # mysql数据源
      master:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/ljw?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&allowMultiQueries=true
        username: root
        password: root
      # 达梦数据源
      slave:
        # 达梦数据源开关/默认开启
        enabled: true
        driverClassName: dm.jdbc.driver.DmDriver
        url: jdbc:dm://192.168.10.166:5236/TZB?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
        username: TZB
        password: 123456789

数据源配置类(这个代码稍微表动了一下,其他的不变)

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;

import lovely.ljw.top.framework.utils.SpringUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {

    @Bean(name="masterDataSource")
    @ConfigurationProperties("spring.datasource.druid.master")
    public DataSource masterDataSource(){
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        return dataSource;
    }

    //控制@Configuration是否生效.ConditionalOnProperty通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值。
    @Bean(name="slaveDataSource")
    @ConfigurationProperties("spring.datasource.druid.slave")
    @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
    public DataSource slaveDataSource(){
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        return dataSource;
    }

    @Bean(name = "dynamicDataSource")
    @Primary
    public DataSource dynamicDataSource (@Qualifier(value="masterDataSource") DataSource masterDataSource){
        //设置默认数据源
        DynamicDataSource dd = new DynamicDataSource();
        dd.setDefaultTargetDataSource(masterDataSource);
        //多数据源配置
        Map targetDataSources = new HashMap<>();
        targetDataSources.put("master", masterDataSource);
        setDataSource(targetDataSources, "slave", "slaveDataSource");//默认不开启,所以能获取bean就添加
        dd.setTargetDataSources(targetDataSources);
        return dd;
    }

    public void setDataSource(Map targetDataSources, String sourceName, String beanName){
        try{
            DataSource dataSource = SpringUtils.getBean(beanName);
            targetDataSources.put(sourceName, dataSource);
        }
        catch (Exception e){
        }
    }

}

分别看一下我mysql和达梦数据库表的数据
mysql数据

达梦数据

看一下使用mysql数据库效果

使用达梦数据库效果

OK,打完收工

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号