返回顶部
首页 > 资讯 > 数据库 >SpringBoot整合mysql、postgres、sqlserver实现多数据源配置案例
  • 110
分享到

SpringBoot整合mysql、postgres、sqlserver实现多数据源配置案例

javamybatis 2023-10-07 17:10:28 110人浏览 安东尼
摘要

        分享一下近期处理的一个小demo,关于配置多数据源实现不同服务之间的数据推送和数据治理。第一次接触到pg库和sqlserver一头雾水,选择了JDBC+mybatis-plus的方式去链接。 首先要引入以下依赖 org.sp

        分享一下近期处理的一个小demo,关于配置多数据源实现不同服务之间的数据推送和数据治理。第一次接触到pg库和sqlserver一头雾水,选择了JDBC+mybatis-plus的方式去链接。

首先要引入以下依赖

org.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-starter-WEBorg.projectlomboklombok1.18.12trueorg.apache.Httpcomponentshttpclient4.5.10com.alibabafastJSON1.2.62Mysqlmysql-connector-java8.0.22org.postgresqlpostgresqlruntimecom.microsoft.sqlservermssql-jdbc9.4.0.jre8org.springframework.bootspring-boot-starter-jdbccom.alibabadruid1.1.13com.baomidoumybatis-plus-boot-starter3.4.0cn.afterturneasypoi-base4.4.0org.springframework.bootspring-boot-Maven-plugin2.7.12com.zkgl.ZsjDemoApplicationrepackage

demo的项目结构如下

yml配置文件

server:  port:3666spring:  application:    name: multiple-data  datasource:    show-sql: false    db1:      jdbc-url: jdbc:mysql://ip地址:端口/数据库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true      username: 数据库账号      passWord: 数据库密码      driver-class-name: com.mysql.cj.jdbc.Driver    db2:      jdbc-url: jdbc:postgresql://ip地址:端口/数据库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true      username: 数据库账号      password: 数据库密码      driver-class-name: org.postgresql.Driver    db3:      jdbc-url: jdbc:sqlserver://ip地址:端口;databaseName=数据库名      username: 数据库账号      password: 数据库密码      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

配置类

package com.zkgl.config;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = "com.zkgl.dao.db1",sqlSessionFactoryRef = "db1SqlSessionFactory")public class MysqlDataSourceConfig {    static final String MAPPER_LOCATION = "classpath:/mapper/db1@Configuration@MapperScan(basePackages = "com.zkgl.dao.db2",sqlSessionFactoryRef = "db2SqlSessionFactory")public class PgDataSourceConfig {    static final String MAPPER_LOCATION = "classpath:/mapper/db2@Configuration@MapperScan(basePackages = "com.zkgl.dao.db3",sqlSessionFactoryRef = "db3SqlSessionFactory")public class SqlServerDataSourceConfig {    static final String MAPPER_LOCATION = "classpath:/mapper/db3/*.xml";    @Bean("db3DataSource")    @ConfigurationProperties(prefix = "spring.datasource.db3")    public DataSource getDb1DataSource(){        return DataSourceBuilder.create().build();    }    @Bean("db3SqlSessionFactory")    public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db3DataSource") DataSource dataSource) throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));        return bean.getObject();    }    @Bean("db3SqlSessionTemplate")    public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("db3SqlSessionFactory") SqlSessionFactory sqlSessionFactory){        return new SqlSessionTemplate(sqlSessionFactory);    }}

controller、dao、service以及对应的.xml文件可以根据自身业务情况进行开发,再次不做过多赘述。

总结:要进行多数据源的配置,以此案例为例,最重要的是对各个库的适配,也就是各自的驱动。众所周知,要使用JDBC连接数据库,主要有以下步骤:

  1. 注册驱动
  2. 建立数据库连接
  3. 创建数据库操作对象
  4. 执行SQL语句
  5. 处理查询结果集
  6. 关闭资源 

而在本案例中,pom中引入了相关依赖,在yml配置了驱动,之后在config中以Bean的形式分别命名和初始化相关配置,这样在SpringBoot项目中,通过@SpringBootApplication注解中的@EnableAutoConfigtion注解就可以扫描到这些配置好的Bean,从而正常使用了。

来源地址:https://blog.csdn.net/Y____M/article/details/132051699

您可能感兴趣的文档:

--结束END--

本文标题: SpringBoot整合mysql、postgres、sqlserver实现多数据源配置案例

本文链接: https://lsjlt.com/news/424641.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作