SpringBoot + mybatis + druid 配置两个数据源
Posted 秃头谷雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot + mybatis + druid 配置两个数据源相关的知识,希望对你有一定的参考价值。
SpringBoot + mybatis + druid 配置两个数据源
目录
一、SpringBoot + mybatis + druid 配置两个数据源?
提示:以下是本篇文章正文内容,下面案例可供参考
一、SpringBoot + mybatis + druid 配置两个数据源?
工作中少不了与数据库打交道 在工作中应该怎么去配置两个数据源呢?
二、使用步骤
1.YML文件的配置
代码如下(示例):
spring:
datasource:
db1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.OracleDriver
url:
username:
password:
db2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: dm.jdbc.driver.DmDriver
url: 注意url不要写成jdbc-url 会报URL找不到
username:
password:
mybatis:
config-location: classpath:mybatis-config.xml
mapper-locations: classpath:mapper/AMapper/*.xml -> xml文件地址一定要写对
2.Mybatis-config的配置
粘贴到resourcces就可以用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="callSettersOnNulls" value="true"/>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
3.从数据源的配置
@Configuration //注解到spring容器中
@MapperScan(basePackages = "com.et.xxx",sqlSessionTemplateRef = "db2SqlSessionTemplate") //这地方改成自己的Mapper
public class DataSourceDM {
@Bean
//引入YML配置
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
//很多文章返回的dataSource 这里需要返回德鲁伊连接池 否则会报一些奇怪的错误
return new DruidDataSource();
}
@Bean
public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource); //不要忘记改
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/xxx/*.xml"));
//这一段是开启驼峰转换~~~~~~~~~~~~
SqlSessionFactory sqlSessionFactory = bean.getObject();
org.apache.ibatis.session.Configuration configuration = sqlSessionFactory.getConfiguration();
configuration.setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
@Bean
public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public SqlSessionTemplate db2SqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
主数据源一毛一样 复制下来再写一遍 db2改成db1 @Bean下面加一个@Primary 来表明主数据源 还有需要改的地方千万别忘记
4.pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<!-- DruidDataSourceBuilder类构建实例 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>com.dm7</groupId>
<artifactId>Dm7JdbcDriver17</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/Dm7JdbcDriver17.jar</systemPath>
</dependency>
我用的Oracle和DM数据库 看看自己数据库改一改
总结
还有就是一些该死的坑
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
报错 什么[H2 URL] 启动类
如果 报ibatis的错看看自己的mapper xml 和 mapper接口的路径 对不对
如果报The Network Adapter could not establish the connection 快去看看自己的url username password是不是写错了
剩下的没啥了 报错不要急 一点一点排查
以上是关于SpringBoot + mybatis + druid 配置两个数据源的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot 整合其他框架 -- SpringBoot整合Mybatis
springboot.springboot用最简单的方式整合mybatis
yml的mybatis的sql查看;Mybatis+Springboot 控制台查看日志,Mybatis结合springboot打印日志
企业分布式微服务云SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis