欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【SpringBoot】springboot整合多数据拆分思路 及 使用分包方式拆分数据源

程序员文章站 2024-03-22 19:18:16
...

一、springboot整合多数据拆分思路

1、多数据源:就是一个项目中使用多个jdbc连接不同的数据库;

例举:一个公司有两个数据库,一个是专门存放共同配置文件的数据库,一个是数据库垂直业务数据库。(垂直:根据业务划分具体数据库)

2、在一个项目中如何划分多数据源:分包名(业务)划分,或者通过注解方式划分

其实也就是怎么区别这个方法或者这个类具体用的哪个数据库

二、使用分包方式拆分数据源

1、遇到一些小麻烦:首先配置文件里url要改成jdbc-url

2、项目结构

【SpringBoot】springboot整合多数据拆分思路 及 使用分包方式拆分数据源

 

3、application.properties文件配置

spring.datasource.type=com.zaxxer.hikari.HikariDataSource

###datasource1

spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.test1.username=root

spring.datasource.test1.password=root

###datasource1

spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.test2.username=root

spring.datasource.test2.password=root

4、datasourceconfig文件内容

package com.ssrtest04.datasource;



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.context.annotation.Primary;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;



@Configuration//注册到springboot容器中

@MapperScan(basePackages="com.ssrtest04.test01",sqlSessionFactoryRef="test1SqlSessionFactory")

public class DataSource1Config{

/**

*@methodDesc:功能描述:(配置test1数据库)

*/

@Bean(name="test1DataSource")

@Primary

@ConfigurationProperties(prefix="spring.datasource.test1")

public DataSourcetest DataSource(){

return DataSourceBuilder.create().build();

}

/**

*

*@methodDesc:功能描述:(test1sql会话工厂)

*/

@Bean(name="test1SqlSessionFactory")

public SqlSessionFactorytest SqlSessionFactory(@Qualifier("test1DataSource")DataSource dataSource)

throwsException{

SqlSessionFactoryBean bean=new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

//bean.setMapperLocations(

//newPathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml"));

return bean.getObject();

}

/**

*

*@methodDesc:功能描述:(test1事物管理)

*/

@Bean(name="test1TransactionManager")

public DataSourceTransactionManagertest TransactionManager(@Qualifier("test1DataSource")DataSource dataSource){

return new DataSourceTransactionManager(dataSource);

}

@Bean(name="test1SqlSessionTemplate")

public SqlSessionTemplatetest SqlSessionTemplate(

@Qualifier("test1SqlSessionFactory")SqlSessionFactory sqlSessionFactory)throwsException{

return new SqlSessionTemplate(sqlSessionFactory);

}

}

 

相关标签: java 多数据源