spring mybitas 實現多資料來源動態切換

2021-09-20 11:26:41 字數 1387 閱讀 4004

1 由於專案需要,需要將不同**的資料存入不同的資料庫,所以需要根據入參的資訊動態切換資料來源

專案core層採用了spring+mybitas 方式進行架構

1 在spring的配置中定義兩個資料來源

2建立乙個新的類 multidatasource

public class multidatasource extends abstractroutingdatasource

@override

protected object determinecurrentlookupkey() 這個類需要繼承 abstractroutingdatasource

並且重寫 determinecurrentlookupkey方法

3 在spring 的配置檔案中新增配置

4 將配置的datasource 新增到sessionfactory 中

5 將sessionfactory 注入到sqlsession中

6 動態切換資料來源決定採用spring-aop 新增切點 去進行動態切換

6.1 新建資料切換類

public class databaseaop else

}
}

6.2 定義資料切換類

6.3定義切點

proxy-target-class="true" 引數是為了設定 攔截 器可以定義為class

注釋 1 abstractroutingdatasource 類中 存在跟資料庫資源建立連線的方法

public connection getconnection()

在該方法中 呼叫了 protected datasource determinetargetdatasource() 方法

在該方法中 會呼叫 determinecurrentlookupkey 獲取database 的key 並根據 key 從對應的資料來源中獲取對應的資料庫連線資源 如資料庫連線池資源

類 multidatasource 重寫了 determinecurrentlookupkey 方法

@override

protected object determinecurrentlookupkey()

在需要切換資料來源之前 呼叫全域性方法 multidatasource.setdatasourcekey(string key) 去切換資料來源

2

配置中的 標籤中的 key 為動態切換資料來源的key

defaulttargetdatasource 引數 指的是預設的資料來源

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...

介面實現與配置實現

在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...

js分頁實現,前端實現。

主要是借鑑了網上乙個例子,自己重新加了樣式,新增了跳轉,修改了一些小地方,用於和大家一起分享,前端分頁的技巧,的資料是我已經寫好了,其實大家也可以前端渲染 然後再分頁,都是可以的。其實分頁最關鍵是這兩句 var startrow currentpage 1 pagesize 1 currentpag...