1.修改.properties

first.datasource.jdbc-url=jdbc:mysql://localhost/forwind
first.datasource.username=root
first.datasource.password=root
first.datasource.driver-class-name=com.mysql.jdbc.Driver
first.datasource.type=com.alibaba.druid.pool.DruidDataSource second.datasource.jdbc-url=jdbc:mysql://172.21.10.53/hue
second.datasource.username=root
second.datasource.password=root
second.datasource.driver-class-name=com.mysql.jdbc.Driver
second.datasource.type=com.alibaba.druid.pool.DruidDataSource #如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)
spring.datasource.type =com.alibaba.druid.pool.DruidDataSource
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

2.SpringBootApplication类修改注解

@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class
})

3.添加数据源配置类

package com.example.demo.config;

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 javax.sql.DataSource; /**
* @author baiyan
* @date 2018/09/26
* @description
*/
@Configuration
public class DataSourceConfig {
//配置数据源
@Bean(name = "first")
@ConfigurationProperties(prefix = "first.datasource") // application.properteis中对应属性的前缀
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
} @Bean(name = "second")
@ConfigurationProperties(prefix = "second.datasource") // application.properteis中对应属性的前缀
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
}

4.给每个数据源生成SQLSessionFactory类

  • 第一个类:
package com.example.demo.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.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service; import javax.sql.DataSource; /**
* @author baiyan
* @date 2018/09/26
* @description
*/
@Configuration
@MapperScan(basePackages = {"com.example.demo.mapper.first"}, sqlSessionFactoryRef = "sqlSessionFactory1")
public class MybatisDbAConfig { @Autowired
@Qualifier("first")
private DataSource ds1; @Bean
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds1); // 使用first数据源, 连接first数据库
return factoryBean.getObject(); } @Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory1()); // 使用上面配置的Factory
return template;
}
}
  • 第二个类
package com.example.demo.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.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration
@MapperScan(basePackages = {"com.example.demo.mapper.second"}, sqlSessionFactoryRef = "sqlSessionFactory2")
public class MybatisDbBConfig {
@Autowired
@Qualifier("second")
private DataSource ds2; @Bean
public SqlSessionFactory sqlSessionFactory2() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds2);
return factoryBean.getObject(); } @Bean
public SqlSessionTemplate sqlSessionTemplate2() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory2());
return template;
}
}

5.根据basePackages的值生成Mapper类

  • 第二个mapper类:
package com.example.demo.mapper.first;

import com.example.demo.module.HueShell;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service; import java.util.List; /**
* @author baiyan
* @date 2018/09/26
* @description
*/
@Service
public interface LocalDBMapper {
@Select("select * from hueshell")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "execute_time", property = "executeTime"),
@Result(column = "name", property = "name"),
@Result(column = "gmt_create", property = "gmtCreate"),
@Result(column = "gmt_modify", property = "gmtModify"),
@Result(column = "shellcontent", property = "shellContent"),
@Result(column = "shellname", property = "shellName"),
@Result(column = "type", property = "type"),
@Result(column = "input", property = "input"),
@Result(column = "output", property = "output"),
@Result(column = "execute_rate", property = "executeRate"),
@Result(column = "paraments", property = "paraments")
})
List<HueShell> getAll();
}
  • 第二个mapper类:
package com.example.demo.mapper.second;

import com.example.demo.module.HueShell;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service; import java.util.List; /**
* @author baiyan
* @date 2018/09/26
* @description
*/
@Service
public interface ServerMapper {
@Select("select search from desktop_document2")
List<String> getAll();
}

6.END

目录结构如下

.

注意:我用的是spring boot 2.x,如果spring boot版本是1.4,那么.properties中的datasource.jdbc-url和driver-class-name记得修改

Spring Boot+MyBabits静态连接多个数据库的更多相关文章

  1. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  2. spring boot配置druid连接池连接mysql

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  3. Spring Boot中静态资源(JS, 图片)等应该放在什么位置

    Spring Boot的静态资源,比如图片应该放在什么位置呢, 如果你放在传统WEB共的类似地方, 比如webapp或者WEB-INF下,你会得到一张示意文件未找到的破碎图片.那应该放哪里呢? 百度一 ...

  4. Spring boot 默认静态资源路径与手动配置访问路径的方法

    这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下   在application.propertis中配置 ##端口号 ...

  5. 不常见偏门的Bug,Spring Boot IDEA 静态资源 图片访问404,初学者之殇

    用过Idea朋友都知道,它有一个非常让人喜欢的功能就是:打算在某个a目录下创建一个hello.class文件,那么你仅需要右键点击New-Java Class- 然后输入名字:a.hello 即可. ...

  6. Spring boot Jpa添加对象字段使用数据库默认值

    Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...

  7. Spring Boot 的静态资源处理

    做web开发的时候,我们往往会有很多静态资源,如html.图片.css等.那如何向前端返回静态资源呢?以前做过web开发的同学应该知道,我们以前创建的web工程下面会有一个webapp的目录,我们只要 ...

  8. spring boot 开静态资源访问,配置视图解析器

    配置视图解析器spring.mvc.view.prefix=/pages/spring.mvc.view.suffiix= spring boot 开静态资源访问application.proerti ...

  9. spring boot 配置静态路径

    一  前言 最近有个项目,需要上传一个zip文件(zip文件就是一堆的html压缩组成)的压缩文件,然后后端解压出来,用户可以预览上传好的文件. 查看资料,spring boot对静态文件,可以通过配 ...

随机推荐

  1. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

  2. MySQL 忘记密码怎么办?

    有时候经常忘记密码,或者更改密码时按错键的,或者不知名的错误.下面介绍windows下,解决办法都是差不多: 更改登录权限为全开放,进入后再更改权限更改密码 有几种情况 (1)如果是使用 WampSe ...

  3. [转] Hadoop MapReduce开发最佳实践(上篇)

    前言 本文是Hadoop最佳实践系列第二篇,上一篇为<Hadoop管理员的十个最佳实践>. MapRuduce开发对于大多数程序员都会觉得略显复杂,运行一个WordCount(Hadoop ...

  4. HA_Snapshots 数据库快照

    1. 创建测试数据库HA_Snapshot 2. 创建快照 create database HA_Snapshot_20 on ( name = HA_Snapshot, filename = '.. ...

  5. 使用CSS进行定位

    CSS中通过使用position属性,有4种不同类型的定位方式,这会影响元素框生成的方式. position属性值的含义: static:静态定位 元素框正常生成.块级元素生成一个矩形框,作为文档流的 ...

  6. CSS3 transition 过度

    一个元素在不同的状态之间进行平滑的交换 CSS3中使用transition属性实现过度效果 一个简单的例子: img{ background-image:url("img/1.jpg&quo ...

  7. HashMap概述及其三种遍历方式

    一.HashMap概述: 1.HashMap是一个散列表,它存储的是键值对(key-value)映射: 2.HashMap继承AbstractMap,实现了Map,Cloneable,Serializ ...

  8. Intellij IDEA run coverage之覆盖率测试

    Intellij IDEA run coverage之覆盖率测试 idea 的coverage + 我们自己写的测试用例.最后看一下,我们要测的代码有没有测试到,这是一个不错的提高代码质量的方法. i ...

  9. Django基础必备三神装(HttpResponse、render,、redirect)

    在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...

  10. 【学习笔记】--- 老男孩学Python,day9, 文件操作

    有 + 就是有光标,注意光标位置 不同模式打开文件的完全列表:  http://www.runoob.com/python/python-files-io.html 模式 描述 r 以只读方式打开文件 ...