亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis利用MyCat實(shí)現(xiàn)多租戶的簡(jiǎn)單思路分享

 更新時(shí)間:2017年06月14日 10:01:34   作者:isea533  
這篇文章主要給大家介紹了關(guān)于MyBatis利用MyCat實(shí)現(xiàn)多租戶的簡(jiǎn)單思路的相關(guān)資料,文中的多租戶是基于多數(shù)據(jù)庫進(jìn)行實(shí)現(xiàn)的,數(shù)據(jù)是通過不同數(shù)據(jù)庫進(jìn)行隔離,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

本文的多租戶是基于多數(shù)據(jù)庫進(jìn)行實(shí)現(xiàn)的,數(shù)據(jù)是通過不同數(shù)據(jù)庫進(jìn)行隔離。下面話不多說,來看看詳細(xì)的介紹:

MyCat 基本配置

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

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Mybatis的插件運(yùn)行原理及如何編寫一個(gè)插件

    Mybatis的插件運(yùn)行原理及如何編寫一個(gè)插件

    這篇文章主要介紹了Mybatis的插件運(yùn)行原理及如何編寫一個(gè)插件 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于ElasticSearch的常用增刪改查DSL和代碼

    關(guān)于ElasticSearch的常用增刪改查DSL和代碼

    這篇文章主要介紹了關(guān)于ElasticSearch的常用增刪改查DSL和代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java中Arraylist的最大長度

    Java中Arraylist的最大長度

    這篇文章主要介紹了Java中Arraylist的最大長度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • JavaEE通過response實(shí)現(xiàn)請(qǐng)求重定向

    JavaEE通過response實(shí)現(xiàn)請(qǐng)求重定向

    這篇文章主要介紹了JavaEE通過response實(shí)現(xiàn)請(qǐng)求重定向的方法,非常的簡(jiǎn)單實(shí)用,有需要的朋友可以參考下
    2014-10-10
  • SpringBoot下使用自定義監(jiān)聽事件的流程分析

    SpringBoot下使用自定義監(jiān)聽事件的流程分析

    事件機(jī)制是Spring的一個(gè)功能,目前我們使用了SpringBoot框架,所以記錄下事件機(jī)制在SpringBoot框架下的使用,同時(shí)實(shí)現(xiàn)異步處理,這篇文章主要介紹了SpringBoot下使用自定義監(jiān)聽事件,需要的朋友可以參考下
    2023-08-08
  • Java索引越界異常Exception java.lang.IndexOutOfBoundsException的解決

    Java索引越界異常Exception java.lang.IndexOutOfBoundsException

    本文主要介紹了Java索引越界異常Exception java.lang.IndexOutOfBoundsException的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 如何應(yīng)對(duì)spring框架的HTTP ERROR 400 Bad Request錯(cuò)誤返回問題

    如何應(yīng)對(duì)spring框架的HTTP ERROR 400 Bad Request錯(cuò)

    這篇文章主要介紹了如何應(yīng)對(duì)spring框架的HTTP ERROR 400 Bad Request錯(cuò)誤返回問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java使用正則表達(dá)式演示電話與郵箱格式

    Java使用正則表達(dá)式演示電話與郵箱格式

    本文詳細(xì)講解了Java正則表達(dá)式的用法,舉例演示電話和郵箱格式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • rabbitmq使用springboot實(shí)現(xiàn)direct模式(最新推薦)

    rabbitmq使用springboot實(shí)現(xiàn)direct模式(最新推薦)

    這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)direct模式,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Spring中的Schedule動(dòng)態(tài)添加修改定時(shí)任務(wù)詳解

    Spring中的Schedule動(dòng)態(tài)添加修改定時(shí)任務(wù)詳解

    這篇文章主要介紹了Spring中的Schedule動(dòng)態(tài)添加修改定時(shí)任務(wù)詳解,可能有人會(huì)問,為啥不用Quartz,Quartz自然是非常方便強(qiáng)大的,但不是本篇要講的內(nèi)容,本篇就偏要使用SpringSchedule來實(shí)現(xiàn)動(dòng)態(tài)的cron表達(dá)式任務(wù),需要的朋友可以參考下
    2023-11-11

最新評(píng)論