mybatis多資料來源配置

2021-08-29 18:21:18 字數 2860 閱讀 6032

最近改造老專案需要使用兩個資料庫,故而總結了一下mybatis的雙資料來源配置,學過mybatis的都知道mybatis其實就是封裝了jdbc的框架,使用mybatis繞不開sqlsessionfactory的配置,那配置多個資料來源的核心也是在於配置多個session工廠,用不同的工廠去操作不同的資料庫就ok了,具體配置請參照下面配置檔案說明,分為springboot和springmvc兩種

#主資料庫

spring.datasource.primary.url=jdbc:mysql://localhost:3306/pa_db?useunicode=true&characterencoding=utf-8

spring.datasource.primary.username=root

spring.datasource.primary.password=root

spring.datasource.primary.driver-class-name=com.mysql.jdbc.driver

#省略連線池配置

#從資料庫

spring.datasource.secondary.url=jdbc:mysql://localhost:3306/cas_user_db?useunicode=true&characterencoding=utf-8

spring.datasource.secondary.username=root

spring.datasource.secondary.password=root

spring.datasource.secondary.driver-class-name=com.mysql.jdbc.driver

2、接著就是核心的sqlsessionfactory配置

2.1、主資料來源

@configuration

public class primarydatasourceconfig

// sqlsessionfactory配置

@bean(name = "primarysqlsessionfactory")

@primary /*此處必須在主資料庫的資料來源配置上加上@primary*/

public sqlsessionfactory testsqlsessionfactory(@qualifier("padatasource") datasource datasource) throws exception

// 事務配置

@bean(name = "primarytransactionmanager")

@primary

public datasourcetransactionmanager testtransactionmanager(@qualifier("primarydatasource") datasource datasource)

@bean(name = "pasqlsessiontemplate")

@primary

public sqlsessiontemplate testsqlsessiontemplate(@qualifier("primarysqlsessionfactory") sqlsessionfactory sqlsessionfactory) throws exception

}

2.2、 從資料來源

@configuration

public class secondarydatasource2config

@bean(name = "secondarysqlsessionfactory")

public sqlsessionfactory testsqlsessionfactory(@qualifier("secondarydatasource") datasource datasource) throws exception

@bean(name = "secondarytransactionmanager")

public datasourcetransactionmanager testtransactionmanager(@qualifier("secondarydatasource") datasource datasource)

@bean(name = "secondarysqlsessiontemplate")

public sqlsessiontemplate testsqlsessiontemplate(@qualifier("secondarysqlsessionfactory") sqlsessionfactory sqlsessionfactory) throws exception

}

1、資料來源配置

2、資料來源動態類

2.1、 獲取資料源

這個地方對應的就是配置檔案中的動態資料來源

public class dynamicdatasource extends abstractroutingdatasource 

}

2.2、切換資料來源

public class dynamicdatasourceholder 

public static void setdatasource(string datasource)

public static void cleardatasource()

}

3、使用方法

前文有指定預設資料來源,預設情況下都會指向那個預設的,如果在請求某個介面時需要使用從資料來源則手動切換

public listissuebyday(@requestbody jirabugvo jirabugvo)

配置mybatis多資料來源

先說一下業務需求,專案中需要兩個資料來源分別連線不同的資料庫,每個dao層只會用到其中乙個資料來源。在dao層想用哪個資料來源直接在注入的時候注入對應的資料來源即可。resource name centersqlsessionfactory public void setsqlsessioinfac...

spring mvc 多資料來源配置

首先配置兩個資料庫 2 再配置乙個datasource 管理 key 值和value值對應,預設選擇datasourcea 其他配置按照正常的spring mvc 配置即可。3 sessionfactory 中使用 datasource做資料來源。4 新建乙個dynamicdatasource類繼承...

spring多資料來源配置

前段時間由於公司專案需求,需要多資料來源的支援,苦b折騰了兩天程式猿,話不多說,直接擼碼。classpath jdbc.properties select 1 true select 1 true org.hibernate.dialect.mysqldialect false update tru...