话不多说直接上干货
一、yml文件配置
spring:
datasource:
masterdb:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/db_name1
username: root
password: root
devdb:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/db_name2
username: root
password: root
这里的masterdb和devdb是自己起的名字叫什么都可以,只需要在后续的配置类中对应上即可
ps:注意一定要是jdbcUrl的样式,若是url则会报错
二、配置类
配置类1
主数据库的配置类,需要添加@Primary注解,以提升优先级
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* @program: photo_fawu
* @description:
* @author: K.faWu
* @create: 2021-12-23 09:53
**/
@Configuration
@MapperScan(basePackages = "com.fawu.mapper.Master", sqlSessionTemplateRef = "MasterSqlSessionTemplate")
public class DBMasterConfig {
@Bean(name = "MasterDataSource")
@ConfigurationProperties(prefix = "spring.datasource.masterdb") //注意这里要与yml文件中的名字相匹配
@Primary
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "MasterSqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("MasterDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml")); //此处是你的mapper.xml文件所在的文件夹,用以执行自定义的sql文件
return sessionFactoryBean.getObject();
}
@Bean(name = "MasterTransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("MasterDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "MasterSqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("MasterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
次数据库
内容配置基本与主数据库相同
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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;
/**
* @program: photo_fawu
* @description:
* @author: K.faWu
* @create: 2021-12-23 09:54
**/
@Configuration
@MapperScan(basePackages = "com.fawu.mapper.Slaver", sqlSessionTemplateRef = "SalverSqlSessionTemplate")
public class DBSlaverConfig {
@Bean(name = "SalverDataSource")
@ConfigurationProperties(prefix = "spring.datasource.devdb")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "SalverSqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("SalverDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml"));
return sessionFactoryBean.getObject();
}
@Bean(name = "SalverTransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("SalverDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "SalverSqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("SalverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
mapper的配置
主数据库的mapper正常写即可,次数据库的则需要加上@Transactional注解
例:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fawu.entity.Play;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Mapper
public interface PlayMapper extends BaseMapper<Play> {
@Transactional(value = "SalverTransactionManager")
List<Play> getList();
}
@Transactional的value值是与你此数据库配置文件的名字相同
三、启动类的配置
使用@EnableAutoConfiguration
注解停止springboot与mybatisplus的自动配置
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @program: photo_fawu
* @description: 启动类
* @author: K.faWu
* @create: 2021-10-25 15:10
**/
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisPlusAutoConfiguration.class})
@SpringBootApplication
public class PhotoApp {
public static void main(String[] args) {
SpringApplication.run(PhotoApp.class,args);
}
}
到这里已经全部配置完成,编写您的service以及controller层进行您的业务开发吧!