案例分享-被*隊友的mybatis蠢哭的一天

昨晚加班的時候被隊友拉着看一個mybatis的問題,耗費了我一個小時時間,最後差點沒被我打死,實在是覺得滑稽,今天回家寫下來跟大夥分享一下。

問題現象

Invalid bound statement (not found),看到這個錯我當時就沒興趣了,我說你這不就是xml裏沒寫xxxMapper.java方法對應的語句嗎,這還有啥猶豫的呢,檢查你的xml啊。

 

 

隊友說,哥,我檢查好多遍了,實在是找不出原因啊,這類問題常見的出錯原因也就以下幾類:

1.檢查xml文件所在namespace名稱是否和Mapper interface所在的包名一樣;

2.mapper的XML配置路徑是否正確

3.xml裏沒寫xxxMapper.java方法對應的語句

4、5、6

。。。。。。

罷了罷了,出問題的時候都說自己沒問題,眼見爲實,我還是自己檢查一遍。

差點打臉

我把常見的報錯原因挨着檢查了一遍,愣是沒發現問題,場面一度尷尬,還debug了半天mabatis的源碼,然並卵,最終我決定解壓jar包看看裏面究竟有沒有那個xml文件。

 

 乍一看似乎沒有問題,xml是存在的,裏面的<Select>也是存在的,停頓三秒鐘。

水落石出

 

mybatis.mapper.upgrade這個目錄,看起來有點奇怪,怎麼沒有層級。

“啊,這還有層級,我以爲是目錄的名字呢,我是這麼建的”

 

搞半天你小子是建了個名字叫“mybatis.mapper.upgrade”的目錄,你是怎麼想的?

你的mapperLocations設置的是classpath:mybatis/mapper/upgrade*/*.xml,怎麼想mybatis/mapper/upgrade這也是個多級目錄啊?

“我參考enterprise那個服務弄的,enterprise裏的mapper目錄就叫mybatis.mapper.enterprise,也沒有層級。"

那個是有層級的,只是你的idea設置了“Compact Middle Packages”導致展示成了mybatis.mapper.enterprise而已,你把"Compact Middle Packages"取消了再看。

 

“是的,取消了以後層級確實出來了"

 

到這問題已經水落石出,白白浪費一小時時間,也反映出隊友的mybatis基礎有待提升,這個操作着實有點滑稽。

 

你曾經遇到過隊友的哪些神奇操作?

 

 照片拍攝於西安大唐西市

 

 

 

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