1. 程式人生 > >Mybatis繫結錯誤的原因

Mybatis繫結錯誤的原因

一般的原因是Mapper interface和xml檔案的定義對應不上,需要檢查包名,namespace,函式名稱等能否對應上,需要比較細緻的對比

解決步驟

按以下步驟一一執行: 1:檢查xml檔案所在的package名稱是否和interface對應的package名稱一一對應 2:檢查xml檔案的namespace是否和xml檔案的package名稱一一對應 3:檢查函式名稱能否對應上 4:去掉xml檔案中的中文註釋 5:隨意在xml檔案中加一個空格或者空行然後儲存 在面試的時候被問到一個問題:為什麼mybatis這個xml檔案和對應的dao層必須放在相同的目錄結構下面,或者同一個包內. 以下是解釋之一:

如果在工程中使用了maven構建工具,那麼就會出現一個問題:我們知道在典型的maven工程中,目錄結構有:src/main/java

src/main/resources,前者是用來存放java原始碼的,後者則是存放一些資原始檔,比如配置檔案等,在預設的情況下maven打包的時候,對於src/main/java目錄只打包原始碼,而不會打包其他檔案。所以此時如果把對應的mapper檔案放到src/main/java目錄下時,不會打包到最終的jar資料夾中,也不會輸出到target資料夾中,由於在進行單元測試的時候執行的是/target目錄下/test-classes下的程式碼,所以在測試的時候也不會成功。

為了實現在maven預設環境下打包時,Mybatis的介面和mapper檔案在同一包中,可以通過將介面檔案放在src/main/java某個包中,而在src/main/resources

目錄中建立同樣的包,這是一種約定優於配置的方式,這樣在maven打包的時候就會將src/main/javasrc/main/resources相同包下的檔案合併到同一包中。

具體回答參見:http://blog.csdn.net/lmy86263/article/details/53428417