第一步:配置多数据源
spring:
datasource:
price:
# price-java库
jdbc-url: jdbc:mysql://xxxxx:xxxx/price?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useSSL=false&allowMultiQueries=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: xxx
password: xxxxx
smart:
jdbc-url: jdbc:mysql://xxxxxx:xxxxxx/smart?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useSSL=false&allowMultiQueries=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: xxxxx
password: xxxxxxxx
第二步:数据源配置类 注意:之前在配置文件中设置了驼峰,但使用配置类后 配置文件中的将失效,需要类中配置
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);//设置驼峰
package com.bchem.priceservice.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.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.bchem.priceservice.mapper", sqlSessionTemplateRef = "priceSqlSessionTemplate")
public class DataSourcePriceConfig {
@Bean(name = "priceDataSource")
@ConfigurationProperties(prefix = "spring.datasource.price")
@Primary
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "priceSqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("priceDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
//设置驼峰
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
@Bean(name = "priceTransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("priceDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "priceSqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("priceSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
package com.bchem.priceservice.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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* @ClassName liweiwei
* @Description TODO
* @date 2024/6/28 13:18
* @Version 1.0
*/
@Configuration
@MapperScan(basePackages = "com.bchem.priceservice.smartmapper", sqlSessionTemplateRef = "smartSqlSessionTemplate")
public class DataSourceSmartConfig {
@Bean(name = "smartDataSource")
@ConfigurationProperties(prefix = "spring.datasource.smart")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "smartSqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("smartDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:smart/*.xml"));
//设置驼峰
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
@Bean(name = "smartTransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("smartDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "smartSqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("smartSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
第三步:接下来就和平时使用类似 写业务类引用就行了 此处省略