SpringBoot配置多数据源(MySQL+SQLServer)

本文介绍如何在SpringBoot项目中配置多数据源,包括MySQL和SQLServer,涉及application.properties和DataConfig的核心配置。作者分享了配置过程中的常见问题和解决方法,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刚学习springboot,为了以后的开发需要故搭建双数据源配置,本文中使用了MySQL+SQLServer,若想在换成oracle数据库,直接在此数据配置的基础上进行再增加一个类似的配置,项目主要分为controller层,dao层,DataConfig层,entity层,service层,并且在每层中又区分为mysql与sqlserver
在这里整个项整个目的插入图片描述
整个功能最主要的核心在于application.properties与DataConfig中的配置
并且在配置过程中也会遇到若干坑,接下来我将着重讲解比较坑的地方

application.properties

需要注意的一点在于这里应为jdbc-url,而不是url

#扫描映射文件
mybatis.mapper-locations=classpath:mapper/mysql_mapper/*.xml,classpath:mapper/sqlserver_mapper/*.xml

#配置mysql数据库
spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&autoReconnect=true&failOve\
                rReadOnly=false&autoReconnectForPools=true&serverTimezone=UTC
spring.datasource.test1.username=root
spring.datasource.test1.password=root

#sqlserver数据库
spring.datasource.test2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.test2.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;databasename=testms
spring.datasource.test2.username=sa
spring.datasource.test2.password=root

#mybitis中打印sql语句
logging.level.com.example.testoubledatasource.dao.mysql_dao.*=debug
logging.level.com.example.testoubledatasource.dao.sqlserver_dao.*=debug

#过滤静态资源
spring.mvc.static-path-pattern=/**

#指定系统直接访问路径
spring.resources.static-locations = classpath:/templates/,classpath:/META-INF/resources/,classpath:/resources/
#热部署:修改后台文件保存后自动重启
#spring.devtools.restart.enabled=true

#Messages资源信息
#spring.messages.basename=messages

#关闭thymeleaf缓存 开发时使用 否则没有实时画面
spring.thymeleaf.cache=false

DataByMySQL

package com.example.testoubledatasource.DataConfig;



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 org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;
//basePackages为dao层接口(用来与数据库做交互)所在的包名
@Configuration
@MapperScan(basePackages = {
   "com.example.testoubledatasource.dao.mysql_dao"},sqlSessionFactoryRef = "test1SqlSessionFactory")
public class DataByMySQL {
   

//  @ConfigurationProperties注解的作用就是从application.properties中读取以  spring.datasource.test1 开头的那些配置,并将其设置为数据源的配置
    @Bean(name = "test1DataSource")
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource testDataSource(){
   
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "test1SqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource)throws Exception{
   
        SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
//        路径地址为mapper.xml所在的位置,这个xml是配置文件,处在resource里面,主要用来写查询语句
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql_mapper/*.xml"));
        return bean.getObject();
    }

    @Bean(name = "test1TransactionManager")
    public DataSourceTransactionManager testTransactionManager
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值