欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

MyCat 基本配置

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

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

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

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

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

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

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

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

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

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

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

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

這段代碼就是在返回 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)了一種簡單的多租戶方式。

總結(jié)

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

相關(guān)文章

  • Mybatis的插件運行原理及如何編寫一個插件

    Mybatis的插件運行原理及如何編寫一個插件

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

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

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

    Java中Arraylist的最大長度

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

    JavaEE通過response實現(xiàn)請求重定向

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論