mybatis接口綁定失效的解決

mybatis接口綁定失效

出現錯誤:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

解釋:這是mybatis所報的異常,意思是接口綁定失效

原因:

1.項目編譯完成後mapper接口和mybatis的xml不在同一個目錄下導致接口綁定失敗。

2.如果是maven工程,使用idea編輯工程,會出現xml文件無法被編譯到target當中,這種情況有兩種解決,首先將和mapper接口在一起的xml文件放在resources文件夾下,這種情況下需要將xml文件所在的包名改成和mapper所在包名一致,還有一種情況就是在pom文件中將xml文件所在的目錄標記為資源路徑。

3.配置文件的路徑寫的有問題,在spring整合mybatis配置中指定mybatis的xml路徑出錯尤其註意如果如果resources包下和java包下路徑相同一定要在路徑前加classpath:來區別兩者的不同,不然也會出現接口綁定失效的問題。

4.mybatis的xml文件中標簽的namespace和對應mapper接口的全限定類名(包名+類名,不含類的後綴名)不一致

5.mybatis的xml文件中標簽的id與對應mapper接口中的方法名不一致

與對應mapper接口中的方法名不一致**

小結一下

大體總結為mapper接口和xml之間關聯出錯,還有就是配置文件對xml所在文件路徑指定錯誤,最後就是在編譯後mapper接口和mybatis的xml不在同一個文件夾中。

mybatis接口綁定方法

通常情況下,使用Mapper.xml是無法實現多個參數的傳遞,除非傳入Map或者是對象,這個時候我們就可以使用接口綁定的方法傳入多個參數,

實現方法

第一步:創建一個與XML包名,類名完全相同的接口,包名類名即XML中配置的namespace

第二步:創建一個與XML中ID相同的方法,然後設置參數,

public interface LogMapper {
List<Log> selAll();
}

第三步:在 mybatis.xml 中使用<package>進行掃描接口和 mapper.xml

<mappers>
<package name="com.bjsxt.mapper"/>
</mappers>

在XML中傳遞參數

因為有多個參數,所以在XML中參數的返回值可以不用寫, 但是在傳參的時候。

第一種方法:可以在SQL語句中加入#{0} #{param1}就可以傳遞參數

第二種方法: 使用註解傳遞參數,

第一步 : 在函數的參數前添加註解

List<Log> selByAccInAccout(@Param("accin") String
accin123,@Param("accout") String accout3454235);

第二步: #{} 裡面寫@Param(“內容”)參數中

<!-- 當多參數時,不需要寫 parameterType -->
<select id="selByAccInAccout" resultType="log" >
select * from log where accin=#{accin} and
accout=#{accout}
</select>

這就相當於是系統底層給我們也註釋中寫的字符串為Key 以形參為value 形成一個key然後傳遞給XML 這就實現瞭多個參數的傳遞

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: