踩了乙個MyBatis的大坑

2022-09-12 17:48:18 字數 696 閱讀 3158

最近在專案中做了乙個上傳檔案(類雲盤)功能。返回檔案列表的時候需要left join 使用者表,取得上傳者的名字。

專案用的是mybatis,**寫好之後發現,對於每乙個上傳者,只取到了他上傳的最後乙個檔案,看起來好像是變成了inner join。但是我在mysql workbench裡面用同樣的語句得到的結果是正常的。

一開始我想不通為什麼會變成這樣,拿inner join去網上查了一下,倒也了解到了mysql在查詢條件為null-reject的條件下會把outer join 變成inner join。比如官方文件和stackoverflow的答案。但是,為什麼直接敲sql是正確的?好像我的問題並不符合上面查到的資料中寫的情況。

解決了問題之後,我又重新回去看了一看mybatis的文件。明確了以下概念:association解決resultmap中has-one的問題,collection解決has-many的問題,這個從標籤名字上面就可以看得出來。關於association,文件中有這樣一段話:

強調了指定id的重要性,但並沒有說不用id會導致返回結果不正確。儘管如此,經過這次問題,我覺得還是遵守官方文件的推薦做法比較好。

解決問題思路要清晰才能定位準確:既然用sql都沒有問題,那問題多半就在mybatis,糾結inner join是走偏了;

除錯的時候記得調整日誌級別為debug,使用其它語言也是類似的;

好好讀官方文件,文件裡推薦的做法也不要不當一回事。

踩了乙個基礎 知識的坑

今在開發乙個迴圈增加select 的時候,出現了v model繫結到相同物件,當乙個select改變其他也會隨之改變的問題 頁面操作,1 選擇其中乙個select 2 當選擇後發現上下兩個select 也隨之選中為了同樣的值 think think why 修改某乙個select 其他兩個也會同著更...

記錄乙個ssh連線大坑

今天在嘗試登入一台使用者機器的時候遇到乙個大坑,通常ssh連線都是用的金鑰對認證的方式,當要遠端到一台機器的時候,需要先登記自己的公鑰,然後申請乙個登入許可權,其實就是在遠端的系統上建立乙個以你當前使用的系統的使用者名稱的使用者,並開放ssh遠端連線的許可權,然後我們ssh連線機器的時候就可以通過s...

發現乙個Mat轉QImage乙個大坑

最近在做opencv的乙個專案,在子執行緒中執行攝像頭同時在主線程中顯示,但是發乙個問題,關閉.exe檔案之後總是提示qtguid.dll 0xc0000005 讀取位置 時發生訪問衝突,ui label setpixmap qpixmap fromimage img 總是提示這一句是有問題,給我找...