1. 程式人生 > >springboot整合mybatis多資料來源

springboot整合mybatis多資料來源

application.properties


#mysql
[email protected]@
spring.datasource.primary.username= @[email protected]
spring.datasource.primary.password= @[email protected]
spring.datasource.primary.driverClassName= @[email protected]

#sqlserver
[email protected]@
[email protected]@
[email protected]
@ [email protected][email protected]

第一個資料來源的配置

package com.eyee.distribution.config;

import com.zaxxer.hikari.HikariDataSource;
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.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;


import javax.sql.DataSource;

/**
 * mysql資料來源
 *auth
 */
@Configuration
@MapperScan(basePackages = {"com.eyee.distribution.mapper.mysql"},sqlSessionFactoryRef ="primarySqlSessionFactory",sqlSessionTemplateRef ="primarySqlSessionTemplate")
public class PrimaryDataSourceConfig {

    /**
     * 讀取peropertie注入第一個資料來源,注意這裡如果不設定primary會報錯
     * @return
     */

    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource CreatePrimaryDataSource()   {
     //指定使用hikari連線池
        return   DataSourceBuilder.create().type(HikariDataSource.class).build();
    }

    /**
     * 將第一個資料來源注入工廠
     * @param dataSource
     * @return
     * @throws Exception
     */

    @Bean(name="primarySqlSessionFactory")
    public SqlSessionFactory primarySqlSessionFactory( @Qualifier("primaryDataSource")DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        //設定資料來源
        sqlSessionFactoryBean.setDataSource(dataSource);
        //掃描xml的路徑地址
       // sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mybatis/mysql/*Mapper.xml"));
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("pageHelper.xml"));//分頁
        return sqlSessionFactoryBean.getObject();
    }
    /**
     * 配置事務管理器
     */

    @Bean
    public DataSourceTransactionManager primaryTransactionManager(@Qualifier("primaryDataSource")DataSource dataSource) throws Exception {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * 查詢使用的模板類注意這裡一定要獨立分開各自的模板類
     * @param sqlSessionFactory
     * @return
     * @throws Exception
     */

    @Bean("primarySqlSessionTemplate")
    public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // 使用上面配置的Factory
        return template;
    }
}

第二個資料來源

package com.eyee.distribution.config;

import com.zaxxer.hikari.HikariDataSource;
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.ClassPathResource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * sqlserver資料來源
 */
@Configuration
@MapperScan(basePackages = {"com.eyee.distribution.mapper.sqlserver"},sqlSessionFactoryRef ="secondarySqlSessionFactory",sqlSessionTemplateRef ="secondarySqlSessionTemplate" )
public class SencondarDatasourceConfig {
    @Primary
    @Bean(name = "scondaryDataSource")
    @Qualifier("scondaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secondary")
    public DataSource CreateSecondaryDataSource()   {

        return   DataSourceBuilder.create().type(HikariDataSource.class).build();
    }
    @Primary
    @Bean(name="secondarySqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("scondaryDataSource")DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        //sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*/mybatis/sqlserver/*"));
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("pageHelper.xml"));
        return sqlSessionFactoryBean.getObject();
    }
    /**
     * 配置事務管理器
     */
    @Primary
    @Bean
    public DataSourceTransactionManager transactionManager(@Qualifier("scondaryDataSource")DataSource dataSource) throws Exception {
        return new DataSourceTransactionManager(dataSource);
    }
    @Primary
    @Bean("secondarySqlSessionTemplate")
    public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // 使用上面配置的Factory
        return template;
    }
}

相關推薦

SpringBoot整合Mybatis資料來源(Atomikos)

一、 Spring介紹 1.1、SpringBoot簡介 在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反覆黏貼的配置有一些厭煩?那麼您就不妨來試試使用Spring Boot來讓你更易上手,更簡

springboot整合mybatis資料來源

application.properties #mysql [email protected]@ spring.datasource.primary.username= @[email protected] spring.datasource.prim

SpringBoot整合mybatis表聯查之數據庫建表

建表 相同字段 將他 必備 關聯 per con 表示 status 1.各關聯表盡量不要使用相同的字段。因為在多表聯查時,如果出現相同的字段,數據庫自動使這些相同字段的值相等。 比如說,訂單表有一個表示訂單狀態的status字段,而它的外鍵關聯的表car有

spring 整合mybatis——資料來源切換(附帶定時器的配置,儲存過程連線,資料多於50條,分批進行操作)

新建com.millery.utils包在其下新建DataSourceContextHolder類 package com.millery.utils; public class DataSourceContextHolder { private

springboot整合mybaties資料來源(註解型)

package com.he.config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.my

springboot+jpa+mybatis 資料來源支援

package com.ehaoyao.paycenter.job.common.config;/** * ERP資料來源配置類 * * @author PF * Created by dell on 2018-05-04. */ import org.springframework.beans.

SpringBootMyBatis 資料來源配置

最近在專案開發中,需要為一個使用 MySQL 資料庫的 SpringBoot 專案,新新增一個 PLSQL 資料庫資料來源,那麼就需要進行 SpringBoot 的多資料來源開發。程式碼很簡單,下面是實現的過程。 ## 環境準備 實驗環境: - JDK 1.8 - SpringBoot 2.4.1 -

springboot整合Mybatis配置資料來源

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

Springboot整合mybatis實現資料來源

1:SpringBoot整合mybatis實現多資料來源有兩種方法 1:靜態方式 將每個資料來源都實現一個mybatis的sqlSessionFactory中,但是這種方法,缺點在於:你有幾個資料來源都會有幾個mybatis的配置類;對於資料來源的事務也不是很

springboot 整合 pagehelper + tk-mybatis 資料來源問題

             閒暇之餘,寫點最近的收穫,寫一點心得,便於以後參考方便,另外可以幫助有這樣需求的人少走彎路。          整合多個數據源,很多部落格會提到springboot整合jdbcTemplete為例子,網上有很多,今天主要推薦的是整合 pagehelp

SpringBoot學習筆記(三):SpringBoot整合MybatisSpringBoot事務管理、SpringBoot資料來源

SpringBoot整合Mybatis 第一步我們需要在pom.xml裡面引入mybatis相關的jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artif

springboot整合mybatis資料來源解決辦法

  最近專案有一個非解決不可的問題,我們的專案中的使用者表是用的自己庫的資料,但是這些資料都是從一個已有庫中遷過來的,所以使用者資訊都是在那個專案裡面維護,自然而然我們專案不提供使用者註冊功能,這就有個問題,如何解決資料遷移的問題,總不能我每次都手動導資料吧,所以我決心寫一個介面把那個庫中的使用者資訊同步我們

springboot整合Mybatis、事務、資料來源、分散式事務

springboot整合Mybatis、事務、多資料來源 文章目錄 springboot整合Mybatis、事務、多資料來源 一. 整合Mybatis 二. 事務 2.1 回顧事務

SpringBoot】——SpringBoot 整合mybatis-plus 單資料來源 & 資料來源,附原始碼

相信大家已經看了不少的教程了,所以在此我不在贅述。。。。。。 遇到的坑,在專案中readme.md 中有描述。具體下載下來配置比較詳細,初始化sql ,單元測試。。。檢視流程即可。 demo非常簡單,下載下來參考 readme.md 修改必要內容即可完成配

SpringBoot整合Mybatis動態資料來源後,MybatisPlus的IPage失效的問題解決方案

背景 之前做資料抽取的時候,搭了一個mybatis動態資料來源切換的架子。方便他們寫抽取的程式碼。今天同事問我,架子裡面的mybatisplus的IPage失效了是什麼問題。想了一下,應該是寫動態資料來源的時候,我自定義的mybatis的配置覆蓋了已有的配置。於是我讓他先把我寫的配置進行刪除,看是否正常。得到

springboot+mybatis資料來源配置,AOP註解動態切換資料來源

轉載至:https://blog.csdn.net/xiaosheng_papa/article/details/80218006 親測有效。 注:有些系統中已經配置了單資料來源,現在要轉成多資料來源,可能需要額外的配置。拿我自己當前專案來說: 專案在啟動類中配置了單資料來源:

基於SpirngBoot2.0+ 的 SpringBoot+Mybatis 資料來源配置

Github 地址:github.com/Snailclimb/…(SpringBoot和其他常用技術的整合,可能是你遇到的講解最詳細的學習案例,力爭新手也能看懂並且能夠在看完之後獨立實踐。基於最新的 SpringBoot2.0+,是你學習SpringBoot 的最佳指南。) ,歡迎各位 Star。

新手也能看懂,基於SpirngBoot2.0+ 的 SpringBoot+Mybatis 資料來源配置

Github 地址:https://github.com/Snailclimb/springboot-integration-examples(SpringBoot和其他常用技術的整合,可能是你遇到的講解最詳細的學習案例,力爭新手也能看懂並且能夠在看完之後獨立實踐。基於最新的 S

spring boot2.0+shiro+mybatis資料來源+druid連線池專案整合

關於整合    網上關於springboot2.0和shiro+myabtis整合的案例很少,大神的教程也是用jpa編寫,jpa很方便,但是還有很多人用mybatis,加之剛學習完mybatis多資料來源整合和druid連線池監控配置,所以算是階段性記錄。 專案目

Mybatis(攔截器實現)通用mapper及全ORM實現(五)-- springboot+mybatis資料來源設定

本篇實際上和mybatisext專案並沒有太大關係了,但在實際專案中脫離不開多個數據源,尤其是主從分離,同樣網上一些資料大同小異而且大部分並不能真正解決問題,所以單獨提出來說一下 假設我們就是要解決一個主從分離,資料來源定義在了application.properties中