SmartSql = MyBatis + Cache(Memory | Redis) + R/W Splitting +Dynamic Repository + Diagnostics ...... ...
一、引言
已經幾個月沒更新了。本來上一章的預告是準備寫TypeHandler的相關特性的。但是在準備的時候。SmartSql的作者重構了一下TypeHandler,使得我一下子沒搞懂TypeHandler的原理,所以一直沒有下手來寫這一章。但最近群里(qq群:604762592)有好幾個小伙伴在問多庫配置的問題。就先寫一下關於這個問題的東西吧。
關於多庫的場景在這裡就不多概述了,想必大家都或多或少做過此類項目。我就直接進入主題,說一下關於SmartSql下單個項目中多資料庫的配置和使用。
二、項目結構
上圖是這次項目的結構,分為Api,2個倉儲項目,一個實體項目。
在Api的項目中。原來我們只需要一個SmartSqlMapConfig。而這個項目中有3個,分別對應了3個資料庫。在Maps的文件夾中分了3文件夾,也是分別對應了3個資料庫。
倉儲分為兩個項目是想展示一下在多庫場景下倉儲的多種配置方法。
三、註冊SmartSql實例
這是Startup中關於註冊SmartSql實例的代碼,分別註冊了3個庫的。這裡需要註意以下幾點:
1. 在多實例下,每個實例都需要對其進行別名配置。方法如上圖,使用UseAlias方法。
2. 多實例意味著多個SmartSqlMapConfig,所以同樣需要使用UseXmlConfig方法配置指定的配置文件。
3. 在配置動態倉儲時,除了配置指定的程式集外,還需要指定倉儲使用的SmartSql實例的別名。
4. 在通用庫和用戶庫這裡,多了一個Filter的委托,用戶過濾倉儲介面。
四、多實例的使用
劃重點:
1.如果使用倉儲,那在這裡和單庫的使用沒有任何區別。因為在註冊的地方已經配置好了。
2. 如果使用SqlMap,就需要在獲取SqlMap實例的時候,使用別名來獲取了。serviceProvider.GetSmartSql("Product").SqlMapper;
3. 其他的使用與單庫沒有區別
四、結語
好了。多庫的基本配置就說到這裡。希望大家下載Demo來好好品味一下。這次就不做預告了。我接下來會按照交流群中提問比較多的問題來更新。