spring mybatis多資料來源配置

2021-09-02 19:38:42 字數 1846 閱讀 8433

應開發需求需要,根據專案業務,不同業務下的資料存入不同的資料庫中,且須讀寫分離。目前常用的有兩種方式:

第一種:定義多個個資料庫連線,分別是areaddatasource,awritedatasource,breaddatasource,bwritedatasource,creaddatasource, cwritedatasource來實現;

第二種:動態資料來源切換,就是在程式執行時,把資料來源動態織入到程式中,從而選擇讀取對應的資料庫。主要使用的技術是:annotation,spring aop ,反射。具體實現方式如下:

先定義乙個annotation的註解類:

@retention(retentionpolicy.runtime)  

@target(elementtype.method)

@documented

public @inte***ce datasourcenote

新增乙個datasource.xml,檔案內容如下:

<?xml version="1.0" encoding="utf-8"?>

資料來源

mybatis.xml配置如下:

<?xml version="1.0" encoding="utf-8"?>

@aspect

@enableaspectjautoproxy(proxytargetclass = true)

@log4j2

public class datasourceaspect

/*** 配置前置通知,使用在方法aspect()上註冊的切入點

*/@before("aspect()")

public void before(joinpoint point) else

}} }

@after("aspect()")

public void after(joinpoint point)

}

下面再來看看choosedatasource類的處理,獲取對應的datasource裡面的資料來源:

public class choosedatasource extends abstractroutingdatasource 

// 設定方法名字首對應的資料來源

public void setmethodtype(mapmap)

}methodtype.put(key, v);

} }}

**實際使用示例如下:

public class testdatadaoimpl extends basedao implements testdatadao

@override

@datasourcenote(dbsource = "testbwrite")

public boolean addtestbusermsglog(listlist)

throws daoexception

@override

@datasourcenote(dbsource = "testcread")

public userdetail querytestcuserdetail(mapparam)

throws daoexception

}

按步驟依順配置下來即可,不是很明白的地方可以去看看

org.apache.commons.dbcp.basicdatasource裡的createconnectionfactory方法。及其他相關方法

Spring MyBatis配置多資料來源

我此處用到的兩個資料庫都是oracle 1.首先修改資料庫的配置檔案,使得其有多個資料庫 2.配置spring的配置檔案 2.1資料庫1的spring配置 2.2資料庫2的spring配置 2.3配置多資料來源 這裡將兩個datasource配置到multipledatasource中,defaul...

Spring Mybatis多資料來源配置

1 在spring的配置檔案裡面,配置多個資料來源,我這裡配置兩個 beanid jobdatasource class com.alibaba.druid.pool.druiddatasource init method init destroy method close beanid xsdat...

Spring MyBatis多資料來源分包

分包的同學點這裡 spring mybatis多資料來源 同包 建立基本的entity service dao 不同的資料來源建立不同的包 我這裡為了分辨 乙個用的是mysql 乙個是oracle 方便測試,我這裡使用的是mybatis 建立mybatis dao 對映 xml 檔案 也要在不同的包...