真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何MyBatis在使用MyCat實現(xiàn)多租戶功能

本篇文章給大家分享的是有關(guān)如何MyBatis在使用MyCat實現(xiàn)多租戶功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)的建站公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風格。自公司成立以來曾獨立設(shè)計制作的站點數(shù)千家。

MyCat 基本配置

首先針對多租戶配置了多個數(shù)據(jù)庫,在 MyCat 的 schema.xml 中配置了多個 schema。

如何MyBatis在使用MyCat實現(xiàn)多租戶功能

在 server.xml 中配置了一個用戶:

如何MyBatis在使用MyCat實現(xiàn)多租戶功能

后面會使用 MyCat 注解(就是注釋)方式根據(jù)不同的標識,將操作指向不同的數(shù)據(jù)庫。

過濾器識別請求匹配對應(yīng)的數(shù)據(jù)庫

標識有很多種方式可以加以區(qū)分,下面使用最簡單的一種,通過不同的二級域名進行識別。二級域名和數(shù)據(jù)庫對應(yīng)的信息可以通過全局庫或者公共庫進行存儲,還可以是簡單的配置文件進行配置,不過下面代碼只是為了演示,因此配置信息都是寫死在代碼中的。

假設(shè)存在以下二級域名,分別對應(yīng)不同的數(shù)據(jù)庫:

  • ui1.mybatis.tk :UI1
  • ui2.mybatis.tk :UI2
  • ui3.mybatis.tk :UI3
     

通過過濾器,在用戶請求時根據(jù)請求地址設(shè)置當前請求使用的數(shù)據(jù)庫:

如何MyBatis在使用MyCat實現(xiàn)多租戶功能

這段代碼只是很簡單的判斷,根據(jù)不同的字符串設(shè)置不同的數(shù)據(jù)庫。使用了一個靜態(tài)的本地線程變量來存儲數(shù)據(jù)庫信息。

重寫 MyBatis 的 MappedStatement 簡單實現(xiàn) MyCat 注解

使用 MyBatis 和數(shù)據(jù)庫進行操作時,所有執(zhí)行的 sql 都是通過 MappedStatement 獲取的,雖然通過攔截器方式也能給 sql 添加注解,但是實現(xiàn)起來有點復雜。通過重寫 MappedStatement 會簡單很多,但是你也需要保證重寫的這個類能夠替代默認的類。

重寫很簡單,只需要修改原有的 getBoundSql 方法:

如何MyBatis在使用MyCat實現(xiàn)多租戶功能

這段代碼就是在返回 BoundSql 前,修改 sql,添加 /*!mycat:schema=數(shù)據(jù)庫*/,具體的數(shù)據(jù)庫從過濾器的靜態(tài)方法獲取,由于每一個請求都會經(jīng)過過濾器(特別注意,如果是任務(wù)一類的調(diào)用,不需要經(jīng)過過濾器,這種情況需要處理任務(wù)執(zhí)行時數(shù)據(jù)庫的綁定,這需要根據(jù)具體業(yè)務(wù)實現(xiàn)),因此這里的操作一定能獲取到具體的數(shù)據(jù)庫。增加這個注解后,MyCat 執(zhí)行時就會自動將數(shù)據(jù)庫的操作發(fā)送到指定的數(shù)據(jù)庫上執(zhí)行,通過這種方式就實現(xiàn)了一種簡單的多租戶方式。

以上就是如何MyBatis在使用MyCat實現(xiàn)多租戶功能,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:如何MyBatis在使用MyCat實現(xiàn)多租戶功能
網(wǎng)站地址:http://weahome.cn/article/jopdop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部