最近改造老專案需要使用兩個資料庫,故而總結了一下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...