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

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

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

MyCat 基本配置

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

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

在 server.xml 中配置了一個(gè)用戶:

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

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

過(guò)濾器識(shí)別請(qǐng)求匹配對(duì)應(yīng)的數(shù)據(jù)庫(kù)

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

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

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

通過(guò)過(guò)濾器,在用戶請(qǐng)求時(shí)根據(jù)請(qǐng)求地址設(shè)置當(dāng)前請(qǐng)求使用的數(shù)據(jù)庫(kù):

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

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

重寫(xiě) MyBatis 的 MappedStatement 簡(jiǎn)單實(shí)現(xiàn) MyCat 注解

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

重寫(xiě)很簡(jiǎn)單,只需要修改原有的 getBoundSql 方法:

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

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

以上就是如何MyBatis在使用MyCat實(shí)現(xiàn)多租戶功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:如何MyBatis在使用MyCat實(shí)現(xiàn)多租戶功能
轉(zhuǎn)載來(lái)于:http://muchs.cn/article8/jopdop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、企業(yè)建站、軟件開(kāi)發(fā)App設(shè)計(jì)、搜索引擎優(yōu)化動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司