最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年06月14日 10:01:34   作者:isea533  
這篇文章主要給大家介紹了關(guān)于MyBatis利用MyCat實(shí)現(xià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 基本配置

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

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

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

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

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

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

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

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

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

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

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

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

這段代碼就是在返回 BoundSql 前,修改 sql,添加 /*!mycat:schema=數(shù)據(jù)庫*/,具體的數(shù)據(jù)庫從過濾器的靜態(tài)方法獲取,由于每一個(gè)請求都會(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èi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • SpringBoot優(yōu)雅實(shí)現(xiàn)計(jì)算方法執(zhí)行時(shí)間

    SpringBoot優(yōu)雅實(shí)現(xiàn)計(jì)算方法執(zhí)行時(shí)間

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中優(yōu)雅實(shí)現(xiàn)計(jì)算方法執(zhí)行時(shí)間的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • SpringBoot和Vue實(shí)現(xiàn)動(dòng)態(tài)二維碼的示例代碼

    SpringBoot和Vue實(shí)現(xiàn)動(dòng)態(tài)二維碼的示例代碼

    二維碼在現(xiàn)代社交和營銷活動(dòng)中被廣泛使用,本文主要介紹了SpringBoot和Vue實(shí)現(xiàn)動(dòng)態(tài)二維碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法

    因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法

    這篇文章主要給大家介紹了因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法,文中通過示例代碼給大家介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • 深入理解java中的null“類型”

    深入理解java中的null“類型”

    這篇文章主要介紹了深入理解java中的null“類型”,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 關(guān)于SpringSecurity的基本使用示例

    關(guān)于SpringSecurity的基本使用示例

    這篇文章主要介紹了關(guān)于SpringSecurity的基本使用示例,SpringSecurity 本質(zhì)是一個(gè)過濾器鏈SpringSecurity 采用的是責(zé)任鏈的設(shè)計(jì)模式,它有一條很長的過濾器鏈,需要的朋友可以參考下
    2023-05-05
  • Java通俗易懂系列設(shè)計(jì)模式之建造者模式

    Java通俗易懂系列設(shè)計(jì)模式之建造者模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計(jì)模式之建造者模式,對設(shè)計(jì)模式感興趣的讀者,一定要看一下
    2021-04-04
  • @JsonSerialize(using = LongToStringUtil.class)注解的使用方式

    @JsonSerialize(using = LongToStringUtil.class)注解的使

    這篇文章主要介紹了@JsonSerialize(using = LongToStringUtil.class)注解的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java手動(dòng)配置線程池過程詳解

    Java手動(dòng)配置線程池過程詳解

    這篇文章主要介紹了Java手動(dòng)配置線程池過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 詳解Java的位操作符

    詳解Java的位操作符

    位操作就是對這些數(shù)據(jù)進(jìn)行基本的操作。如果基本類型是char、byte或者short類型的數(shù)值進(jìn)行移位處理,那么會(huì)轉(zhuǎn)化成int類型,再進(jìn)行移位的處理
    2017-09-09
  • springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析

    springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析

    這篇文章主要介紹了springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評(píng)論

库车县| 嘉义市| 桑日县| 临高县| 扶沟县| 海盐县| 黄平县| 长垣县| 康平县| 民勤县| 常州市| 延川县| 萝北县| 额尔古纳市| 宁安市| 丰县| 乡宁县| 安新县| 广平县| 古蔺县| 辽源市| 东港市| 玛曲县| 贵定县| 沐川县| 巴塘县| 金平| 禄丰县| 潞城市| 静宁县| 富阳市| 焦作市| 汉川市| 南宁市| 庐江县| 马尔康县| 无极县| 定襄县| 崇仁县| 株洲市| 巴楚县|