一、背景
- 在spring web项目中,数据经常会来自多个数据库。
- 如果使用多源数据库配置, 在
application.properties
文件里对Mybatis的配置将失效, 也就是说, 如果项目开启了自动转换驼峰命名法, 需要在配置类里面再次开启, 否则会查不到数据库里的数据。
二、配置步骤
1.application.properties文件
首先在application.properties
文件里面配置2个数据库的信息, 其中一个主数据库, 一个从数据库
# 主数据库
spring.datasource.master.jdbcUrl=jdbc:mysql://10.26.21.100:3306/aas?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.master.username=xxx
spring.datasource.master.password=xxx
# 从数据库
spring.datasource.slave.jdbcUrl=jdbc:mysql://10.26.21.100:3306/odin_aas?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.slave.username=xxx
spring.datasource.slave.password=xxx
# mapper文件中的实体对象
mybatis.type-aliases-package=com.ke.bigdata.aas.entity
# Java中的驼峰命名映射为数据库中的下划线命名
mybatis.configuration.map-underscore-to-camel-case=true
2.数据源配置类
配置的目录结构如下:
(1)主数据源配置类
主要信息包含了:dao的路径,mapper的路径,数据源的前缀名称
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.ke.big