java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for

weixin_34353714發表於2017-09-20

java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for

異常的出現

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.xxxx.order.dao.task.OrderMapper.findAddressOrderBlackList
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.xxxx.order.dao.task.OrderMapper.findAddressOrderBlackList

原因

MappedStatement集合裡面不包含這個方法,MyBatis會根據xml檔案生成MappedStatement放到Configuretion中,如果找不到,有可能是對應的xml找不到,或者xml中沒有id為findAddressOrderBlackList語句。

探索

4055686-bba23cc9876a370b.png
報錯
4055686-ba7d902b014aa81f.png
dao
4055686-4438912cc2fffb7a.png
從Configuration中獲得MappedStatement
4055686-95aa323c010561f0.png
異常就是從get方法丟擲的
4055686-b2b9ca2c71f1d5da.png
果然就是這裡

sch:在很久之前頁遇到過同樣的問題,原因是xml檔案的namespace不對,也導致從MappedStatement的集合中查詢不到。最近在閱讀MyBatis原始碼,所以一看就知道是什麼原因導致的了。
上次的連結:
http://www.jianshu.com/p/322a2c897352

相關文章