日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

解決錯誤:org.apache.ibatis.binding.BindingException

作者:young_man2 更新時間: 2022-07-12 編程語言

項目場景:

在學習mybatis的代理開發的時候出現了此問題


問題描述

今天在學習mybatis的時候出現了錯誤:

Exception in thread "main" org.apache.ibatis.binding.BindingException: Type interface com.wxy.dao.UserMapper is not known to the MapperRegistry.
	at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
	at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:745)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:292)
	at com.wxy.service.ServiceDemo.main(ServiceDemo.java:31)

原因分析:

1. 我們得知道這句話的意思是你的Mapper接口,被Spring注入后,卻無法正常的使用mapper.xml的sql

2. 這里的Spring注入后的意思是,你的接口已經成功的被掃描到,但是當Spring嘗試注入一個代理(MyBatista實現)的實現類后,卻無法正常使用。這里的可能發生的情況有如下幾種;

①接口已經被掃描到,但是代理對象沒有找到,即使嘗試注入,也是注入一個錯誤的對象(可能就是null)
②接口已經被掃描到,代理對象找到了,也注入到接口上了,但是調用某個具體方法時,卻無法使用(可能別的方法是正常的)


解決方案:

如何解決?

1. 檢查你的映射文件中的namespace是不是和接口文件的路徑一致

比如你的接口的全限定名為com.dao,類名為UserDao,那么在你的映射文件中的namespace的參數應該為com.dao.UserDao

【注意:直接復制的路徑是com/dao/UserDao.java? 這樣是不可以的,只可以使用.進行連接】

2. 檢查你的映射文件中的id是不是和接口中的方法名一致?

比如你的方法名為findAll(),那么你的映射文件中的id就需要是findAll

3. 檢查你的接口的輸出是不是和你的resultType一致?

比如你的resultType是user類,那么你的接口的輸出【假設你的接口里面的方法為List<xxx> findAll() ;】即你這里的xxx需要是User

注意哈,我這里使用User是因為我已經在核心配置文件中進行重命名了的,所以你沒有進行重命名的話,你的resultType就需要是包名+User,然后你的輸出里面的xxx仍然是User就可以,不會有影響的哈

給個截圖吧

①沒有進行核心配置文件自定義別名

②自定義別名了

?

?????????4. 檢查你的接口的輸入和你的paramType是不是一致?

【假設你的接口里面的方法為List<User> findAll(xxx) ;】,映射文件為paramType="int",那么你這里的xxx需要是int i【這個參數隨意,只要參數類型是int就行】

希望對你有幫助!

祝你早日找到工作!一起加油!

原文鏈接:https://blog.csdn.net/young_man2/article/details/125716766

欄目分類
最近更新