項目不規範引起的Mybatis Plus多數據源批量操作提示表不存在的問題

前段時間同事在項目當中使用到多數據源,項目集成的是mybatis plus ,遇到一個非常神仙的BUG,有數據源A ,數據源B,針對數據源A的所有操作都沒有問題,針對數據源B的所有操作,除了批量的操作也都沒有問題!!!

當進行批量操作的時候,發現會提示,xxx表不存在!!!,但是如果是查詢數據,不批量進行操作,就可以查詢出來,所以當遇到這個神仙BUG的時候,直接蒙圈了!!!

最後進行到處嘗試,分析源碼,等待各種方式,搞了一兩天,終於知道原因了,mybatis plus裏面的批量操作都沒有走DAO層,是通過SqlSession進行的,然後數據源的切換是在DAO進行的。

分析到上面,本以爲找到了問題,發現數據源的切換是手寫的一個註解,這個註解在其他項目當中是完全沒有出現這個問題的!!!最後一步一步跟蹤代碼分析發現主要原因是在項目配置多數據源的時候,會指定每個數據源的DAO層接口位置。然後將DAO接口位置和數據源的關係存儲起來,然後調用DAO層的時候就調用對應的數據源。但是在這個項目當中,DAO層沒有分包,兩個數據源指定的DAO層位置都一樣,就導致出現這個問題。

最終解決方式:DAO層按照數據源分包就可以了。

總結:按照規範來說項目多數據源的時候都是需要進行分包的,這樣比較容易區分管理。也會避免很多不必要的問題!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章