本人想要实现一个项目里面多个数据库源连接,所以就尝试写一个demo,不多说,先贴结构,再贴代码,可以根据以下的顺序,直接copy解决问题。

首先,dao和resource下的mappers可以用mybatis-generator-maven-plugin插件自动生成,用法可以自己查看,这里不说了。

1.Application.java源码

@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class
})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

exlude实现不自动注入spring.mybatis默认的配置信息

2.config包

a.DataSourceConfig.java

@Configuration
public class DataSourceConfig {
@Bean(name = "HTTags")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.HTTags")
public DataSource dataSourceA() {
return DataSourceBuilder.create().build();
} @Bean(name = "DBHTNews")
@ConfigurationProperties(prefix = "spring.datasource.DBHTNews")
public DataSource dataSourceB() {
return DataSourceBuilder.create().build();
}
}

我这里需要实现两个不同的库之间的操作,所以建立这个DataSourceConfig,从application.properties里面读取不同配置信息,返回新的DataSource。

b.MybatisDataBaseAConfig.java

@Configuration
@MapperScan(basePackages = {"com.htsec.sync.tag.manager.dao.httags"}, sqlSessionFactoryRef = "sqlSessionFactory1", sqlSessionTemplateRef = "sqlSessionTemplate1")
public class MybatisDataBaseAConfig { @Autowired
@Qualifier("HTTags")
private DataSource ds1; /**
* //参数传入:@Qualifier("httags") DataSource ds1
*
* @return
* @throws Exception
*/
@Bean
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds1);
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
//解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):异常
factoryBean.setMapperLocations(resolver.getResources("classpath:mappers/httags/*.xml"));
return factoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} /**
* //参数传入:@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory
*
* @return
* @throws Exception
*/
@Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate sessionTemplate = new SqlSessionTemplate(sqlSessionFactory1());
return sessionTemplate;
}
}

此处注意有坑,一定把mappersan写好,还要注意resource下的mappers地址配置。

c.MybatisDataBaseBConfig.java

@Configuration
@MapperScan(basePackages = {"com.htsec.sync.tag.manager.dao.htnews"}, sqlSessionFactoryRef = "sqlSessionFactory2", sqlSessionTemplateRef = "sqlSessionTemplate2")
public class MybatisDataBaseBConfig { @Autowired
@Qualifier("DBHTNews")
private DataSource ds1; /**
* //参数传入:@Qualifier("httags") DataSource ds1
*
* @return
* @throws Exception
*/
@Bean
public SqlSessionFactory sqlSessionFactory2() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds1);
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
factoryBean.setMapperLocations(resolver.getResources("classpath:mappers/htnews/*.xml"));
return factoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} /**
* //参数传入:@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory
*
* @return
* @throws Exception
*/
@Bean
public SqlSessionTemplate sqlSessionTemplate2() throws Exception {
SqlSessionTemplate sessionTemplate = new SqlSessionTemplate(sqlSessionFactory2());
return sessionTemplate;
}
}

sqlSessionFactory和sqlSessionTemplate命名一定要和上面那个不一样。

3.application.properties

# HTTags
spring.datasource.HTTags.url=jdbc:sqlserver://x.x.x.x:1433;DatabaseName=HTTags
spring.datasource.HTTags.username=sa
spring.datasource.HTTags.password=password
spring.datasource.HTTags.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver # DBHTNews
spring.datasource.DBHTNews.url=jdbc:sqlserver://x.x.x.x:1433;DatabaseName=HTNews
spring.datasource.DBHTNews.username=sa
spring.datasource.DBHTNews.password=password
spring.datasource.DBHTNews.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

4.pom.xml

<dependencies>
<!-- springframework -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <!-- spring boot test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency> <!-- org.mybatis.spring.boot -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency> <!-- sql server jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>

就这么多吧。

Spring Boot 整合mybatis 使用多数据源的更多相关文章

  1. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

  2. spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务

    文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...

  3. Spring Boot系列(三):Spring Boot整合Mybatis源码解析

    一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...

  4. 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?

    Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...

  5. spring boot 整合 mybatis 以及原理

    同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...

  6. Spring Boot 整合mybatis时遇到的mapper接口不能注入的问题

    现实情况是这样的,因为在练习spring boot整合mybatis,所以自己新建了个项目做测试,可是在idea里面mapper接口注入报错,后来百度查询了下,把idea的注入等级设置为了warnin ...

  7. Spring Boot整合Mybatis报错InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

    Spring Boot整合Mybatis时一直报错 后来发现原来主配置类上的MapperScan导错了包 由于我使用了通用Mapper,所以应该导入通用mapper这个包

  8. Spring Boot整合MyBatis(非注解版)

    Spring Boot整合MyBatis(非注解版),开发时采用的时IDEA,JDK1.8 直接上图: 文件夹不存在,创建一个新的路径文件夹 创建完成目录结构如下: 本人第一步习惯先把需要的包结构创建 ...

  9. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

随机推荐

  1. Guava 1:概览

    一.引言 都说java是开源的,但是除了JDK外,能坚持更新且被广泛认可的开源jar包实在是不可多得.其中最显眼的自然是guava了,背靠google自然底气十足,今天就来解开guava的面纱,初探一 ...

  2. git clone git@github.com:xxx.git Permission denied (publickey) 问题解决办法

    From: https://www.cnblogs.com/restart/p/4633928.html 如果git无法通过普通的http去clone远程分支,可以选用ssh方式去连接.这时需要配置相 ...

  3. __slots__用法

    class Test(object): __slots__ = ("name","age") t = Test() t.name = "老王" ...

  4. php 7 event 安装

    有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口. 下载地址:http://pecl.php.net/package/event ...

  5. IIS6.0+win2003部署MVC网站的一些问题

    安装iis,framework环境不谈.MVC网站部署 步骤: 1.为程序新建一个应用程序池(将default的那个程序池作为模板就可以了) 2.web服务扩展一些启用一些必要的服务 3.新建网站 描 ...

  6. python内置函数整理

    1. abs() 函数返回数字的绝对值 2 divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b). 3, input() 相等于 eval(ra ...

  7. LINUX PID 1 和 SYSTEMD

    要说清 Systemd,得先从Linux操作系统的启动说起.Linux 操作系统的启动首先从 BIOS 开始,然后由 Boot Loader 载入内核,并初始化内核.内核初始化的最后一步就是启动 in ...

  8. 自动配置pom文件,构建maven项目jar包依赖关系,找到jar包运用到jmeter

    首先说下pom文件特别方便的优点: 什么是pom文件? POM(Project Object Model) 是Maven的基础. 它是一个XML文件,包含了Maven用来build项目所需要的项目配置 ...

  9. Oracle导出表数据与导入表数据dmp,以及导入导出时候常见错误

    使用DOS 操作界面导出表数据,导入表数据(需要在数据库所在的服务器上边执行) exp UserName/Password@192.168.0.141/orcl   file=d:\xtables.d ...

  10. C# 设置Excel数字格式

    数字格式使指能够控制Excel单元格中数字如何显示的格式字符串.例如,我们可以对数字12345应用数字格式“0.00”,使之显示为“12345.00”.在例如对数字12345应用“¥0.00”格式,使 ...