Spring Boot笔记-使用dynamic-datasource配置多元数据库(MySQL和达梦)

以前都用JPA,配置多元数据库稍微麻烦那面一点点,这几天看了下年轻人的Java代码,发现Mybatis用得比较多了,而且还有比较好用的三方库,配置多元数据库,相对简单,在此记录下。方便以后使用。

Maven导入:

XML 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>

在yml文件中配置,官方只给出了yml。properties没有提,但看了yml后,发现的确比properties要简洁好用多了。

bash 复制代码
spring:
  datasource:
    dynamic:
      primary: mysql
      datasource:
        mysql:
          url: jdbc:mysql://127.0.0.1:3306/XXX?characterEncoding=utf-8&useSSL=false
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver
        dm7:
          url: jdbc:dm://127.0.0.1/XXX?characterEncoding=utf-8&useSSL=false
          username: SYSDBA
          password: SYSDBA
          driver-class-name: dm.jdbc.driver.DmDriver

这里有点要注意的primary必须指定一个,不然项目启动后会报错。

使用就相当简单了,用注解就可以了。下面我用jdbctemplate来调用下。

MySQLTest.java

java 复制代码
package cn.demo.test;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
@DS("mysql")
public class MySQLTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Map<String, Object>> test(){
        return jdbcTemplate.queryForList("select * from XXX.XXX");
    }
}

DMTest.java

java 复制代码
package cn.demo.test;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
@DS("dm7")
public class DMTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Map<String, Object>> test(){
        return jdbcTemplate.queryForList("select * from XXX.XXX");
    }
}

TestMain.java

java 复制代码
package cn.demo;

import cn.demo.test.DMTest;
import cn.demo.test.MySQLTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestMain  implements CommandLineRunner {

    @Autowired
    DMTest dmTest;

    @Autowired
    MySQLTest mySQLTest;

    public static void main(String[] args) {
        SpringApplication.run(TestMain.class, args);
    }

    public void run(String... args) throws Exception {

        System.out.println(dmTest.test());
        System.out.println(mySQLTest.test());
    }
}

启动后打印这个,就是成功了

源码打包下载地址:

Java/dynamic-datasource-demo at master · fengfanchen/Java · GitHub

相关推荐
weixin_460443562 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计
数据库·redis·在线考试系统·培训考试系统·煤矿培训考试系统·煤矿在线考试系统·宏远培训考试系统
风哥2号2 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
九皇叔叔6 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存
云和恩墨6 小时前
删库不跑路,回滚极速触达——zData S“旁路日志”持续保护原理深剖
数据库
MetaLite7 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
开心就多写,一点就开心7 小时前
导演视听语言与分镜系统笔记(一):景别系统、机位视点与时空连贯性设计
笔记·aigc·镜头·电影
凤山老林7 小时前
聊聊企业级 API 安全:Spring Boot 落地 OAuth 2.1、mTLS 与接口签名防篡改
spring boot·后端·安全·oauth
Wang's Blog9 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
疯狂打码的少年9 小时前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
蓝速科技11 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享