1. 程式人生 > 實用技巧 >記一個因resources路徑引發的org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

記一個因resources路徑引發的org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

閱讀本文需要 5 分鐘

前言

通常來說,這個 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 就是介面的方法找不到對應Mapper檔案的statementId(namespace + id)

常規的排查方法可以看這篇文章 連結

但我的情況比較特殊,最後從這篇文章發現蛛絲馬跡 連結

原因是resources下的路徑有【.】和【\】的區別

問題還原

  • IDEA 下,在resources 建立 com.example.dao
    在這裡插入圖片描述
  • 如果裝了mybatis的外掛,如 Free Mybatis plugin,Mapper介面是能夠跳轉到xml的
    在這裡插入圖片描述
  • 然後把xml檔案移進去,編譯,檢視target
    在這裡插入圖片描述
    可以看到 resources 的檔案被單獨拿出來了,沒有跟mapper介面編譯在一起

也嘗試過用 resources 標籤,編譯特定字尾的檔案,但也不能解決

問題解決

  • IDEA下,在resources 建立 com\example\dao
    在這裡插入圖片描述
  • 然後把xml檔案移進去,編譯,檢視target
    在這裡插入圖片描述
    然後就在一起了 一 ^ 一,接下來能正常執行