1. 程式人生 > >springboot配置多資料來源 mybatis

springboot配置多資料來源 mybatis

application.yml配置

spring.datasource.primary.url=jdbc:mysql://192.168.10.109:3306/demo
spring.datasource.primary.username=root
spring.datasource.primary.password=123
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.minor.url=jdbc:mysql://192.168.10.109:3306/demo
spring.datasource.minor.username
=root spring.datasource.minor.password=123 spring.datasource.minor.driver-class-name=com.mysql.jdbc.Driver

主資料來源  檔案配置

import com.quipoo.mybatis.page.PageHelpInterceptor;
import org.apache.ibatis.plugin.Interceptor;
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.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties
; 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; import java.util.Properties; /** * mybatis多資料來源的配置 * 在主資料來源的註解上要加上 @primary註解 * 首先 要先建立datasource * 然後 建立sqlSessionFactory -->需要DataSource資料來源注入 --》還要對映主資料來源的mapper.xml檔案 多個數據源時要分開放在不同的資料夾裡 * 然後 建立DataSourceTransactionManger 進行事務的管理 --》需要注入DataSource * 然後 建立SQLSessionTemplate --》使用這個模板來呼叫資料庫 --》需要注入SQLSessionFactory */ @Configuration @MapperScan(basePackages = "com.quipoo.mybatis.primaryMapper",sqlSessionTemplateRef = "primarySqlSessionTemplate") public class PrimaryDataSourceConfig { @Bean(name = "primaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.primary") @Primary public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "primarySqlSessionFactory") @Primary public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis1/*.xml")); Properties properties = new Properties(); properties.setProperty("dialect","mysql"); PageHelpInterceptor pageHelpInterceptor = new PageHelpInterceptor(); pageHelpInterceptor.setProperties(properties); bean.setPlugins(new Interceptor[]{pageHelpInterceptor}); return bean.getObject(); } @Bean(name = "primaryTransactionManager") @Primary public DataSourceTransactionManager transactionManager(@Qualifier("primaryDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "primarySqlSessionTemplate") @Primary public SqlSessionTemplate sqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }

副資料來源   配置檔案

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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
@Configuration
@MapperScan(basePackages = "com.quipoo.mybatis.minorMapper",sqlSessionTemplateRef = "minorSqlSessionTemplate")
public class MinorDataSourceConfig {
    @Bean(name="minorDatasource")
    @ConfigurationProperties("spring.datasource.minor")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
}

    @Bean(name="minorSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("minorDatasource") DataSource dataSource )throws Exception{
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis2/*.xml"));
        return sqlSessionFactoryBean.getObject();
}

    @Bean(name="minorTransactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("minorDatasource")DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
}

    @Bean(name="minorSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("minorSqlSessionFactory")SqlSessionFactory sqlSessionFactory){
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
        return sqlSessionTemplate;
}

}

相關推薦

springboot配置資料來源 mybatis

application.yml配置 spring.datasource.primary.url=jdbc:mysql://192.168.10.109:3306/demo spring.datasource.primary.username=root spring.dat

springboot配置資料來源之Spring Date JPA

多資料來源在專案開發中是經常遇到的,如果同一個專案的不同模組使用的是不同資料庫,就需要多資料來源的處理。現在先寫之前使用JPA的時候遇到多資料來源的配置,後續可能再來個關於mybatis的多資料來源配置。 現在有這樣的需求,專案中有兩個模組,分別是flow與imap,flow需要使用預設資料

springboot配置資料來源(MongoDB主從)

相信看過上一篇文章的小夥伴已經知道了, 這章要講的就是MongoDB主從配置。 在這邊文章中,你將要學到的是在專案中配置主從資料庫,並且相容其他資料庫喲。。這些都是博主專案中需要並且比較重要的知識哦~ 好了,廢話不多說,直接進主題。 1.pom依賴 <depende

springboot配置資料來源(不同DB)

springBoot整合Mysql+MongoDB 因為在專案中需要用到兩個不同的資料來源。但是又不存在於一個DB中。讓我很是苦惱,不得已只能整合多資料來源。 博主文筆不好,只能講乾貨了。。 目標: 使用springBoot整合mys

手把手教你用springboot配置資料來源

<project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache

SpringBoot配置資料來源(druid)

分析 spring本身是支援多資料來源動態切換的,AbstractRoutingDataSource這個抽象類就是spring提供的一個數據源路由的一個入口,該抽象類暴露了一個determineCurrentLookupKey()的方法,該方法返回值是Object,該返回值作為key

SpringBoot配置資料來源(MySQL+SQLServer)

SpringBoot 版本 1.5.13.RELEASE,以下maven依賴中包含jpa、web、mysql驅動、sqlserver驅動、測試模組。(按需新增) <parent> <groupId>org.springframework.

springboot配置資料來源並整合Druid

1.application.properties配置檔案 spring.datasource.type = com.alibaba.druid.pool.DruidDataSource #----DS1---- spring.datasource.primary.u

springboot配置資料來源,註解操作資料庫

最近新搭建了一個專案,需要去不同的資料庫中查詢資料,需要多個數據源,在網上搜索了下,基本上實現都很複雜,下面我自己實現了一個很簡單的配置方法。 1、原來我們都是在application.yml檔案中配置資料來源,現在不需要在application.yml檔案中配置了。   &n

springboot 配置資料來源

1.首先在建立應用物件時引入autoConfig @ComponentScan @EnableAutoConfiguration public class Application extends SpringBootServletInitializer { public

springboot配置資料來源java.lang.IllegalArgumentException: At least one JPA metamodel must be present!

前言      springboot 專案啟動時遇到問題: At least one JPA metamodel must be present! ,怎麼解決的呢,下面來一起看下。 正文 問題再現

SpringBoot配置資料來源

SpringBoot下配置多資料來源,有的時候我們的專案可能需要從不同的資料來源獲取或者操作資料,這個時候就需要配置多資料來源; 環境 Spring-Boot 1.5.3.RELEASE 、JDK1.8、HikariDataSource 搭建SpringBoot

SpringBoot配置資料來源(結合Druid)

在單資料來源的情況下,Spring Boot的配置非常簡單,只需要在application.properties檔案中配置連線引數即可。但是往往隨著業務量發展,我們通常會進行資料庫拆分或是引入其他資料庫,從而我們需要配置多個數據源,下面介紹多資料來源的配置方式。

springboot整合Mybatis配置資料來源

springboot配置多資料來源有好幾種方式 1.application.properties配置 ## 埠 server.port=8080 # 資料庫訪問配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spri

springboot使用mybatis如何配置資料來源

本篇部落格提供一個工程想連線多個數據庫進行業務查詢,在原先的單個數據庫上進行配置實現多個數據庫的使用,對於springboot以及mybatis不在此進行展開介紹,只需要把程式碼按照步驟一步步貼上進你的專案,調整一下就能實現; 簡單介紹單個數據源配置 pom檔案匯入依賴 <

SpringBoot學習筆記---配置資料來源Mybatis

介紹 為什麼配置多資料來源,因為在實際業務需求中 資料的來源可能不是一個數據庫中可進行配置兩套資料來源就可以避免跨庫查詢 pom檔案需要引入的依賴 <dependency> <groupId>org.mybatis.spring.boot</gr

springboot+mybatis配置資料來源(MySQL+SQLServer)

1.應用場景        什麼時候才用的到配置多資料來源??當我們用不同資料庫存放不同資料的時候。這個時候我們整個工程並不是只用一個數據庫,所以,要配置多個,在具體的場景應用具體的資料來源。 2.檔案結構 3.主要思路 假設現在有兩類人,需要登入,在不同的登入頁

SpringBoot資料來源 配置mybatis 駝峰命名不管用,帶下劃線欄位返回null值

在springboot中 開啟是自動轉換,但是,這個配置根本沒有生效, 當查出來的資料時,只要欄位名中有 下劃線的欄位, 就會出現 null 在者我的工程是多資料來源工程,這是導致這個配置沒有生效的原因,因為他不知道為哪個資料來源開啟駝峰命名 所以我們需要在配置多資料來源的檔案

springboot+mybatis配置資料來源

1、首先你自己實現了單資料來源。 2、然後在application.properties中配置第二資料來源 #第一資料來源 spring.datasource.db_medical.url=jdbc:mysql://192.168.1.70:3306/d

springboot 2.0+mybatis+hikari/druid+atlas+mysql 配置資料來源及遇到的坑

前言:由於專案中用到了多個數據源,所以需要配置多資料來源。這時候就不能使用springboot的預設資料來源載入了,需要自定義多個數據源。一、配置準備看了springboot的doc和一些博主的經驗之談,發現配置多資料來源並不麻煩。選擇了一種比較簡單的方式,自定義DataSo