ShardingSphere Hint模式不需要對sql進行解析,就可以進行數據庫或者表的路由。下面貼一下代碼,關於SpringBoot + Mybatis + ShardingSphere怎樣結合。
配置文件,注意是DataSources 多了個s
啟動類,排除了DataSourceAutoConfiguration
然后ShardingSphere 的配置類
@Primary很關鍵。
現在就相當於你配置的數據源已經受ShardingSphere管理、攔截。你項目中所執行的sql相關的東西都會有ShardingSphere代理執行。
接下來是doSharding方法。
根據HintManager設置的業務相關的標識,判定數據庫,業務標識與數據庫之間的映射關系自由發揮。
availableTargetNames 是ShardingDataSourceFactory.createDataSource中所有的數據庫。
shardingValue 是 HintManager設置的數據庫,通過比較設置數據源,HintManager中使用ThreadLocal只對當前線程生效,所以,如果某線程沒有設置數據源 可采取shardingValue 默認值的情況,設置默認數據源。
setDataSource是靜態方法,可在代碼中手動設置切換,同時也可封裝切面,在Dao層自動切換數據源,隨各位看官心情吧,有時間將會整理后上傳github。
還有Spring 動態設置數據源切換,后續補充吧,Spring 動態數據源切換相對較多,ShardingSphere Hint 模式還比較少吧。
原創,有需要轉載請標明出處。