MyBatis中出现Mapped Statements collection does not contain value异常解决方案

在使用MyBatis实现数据持久层过程中,定义了如下一个 SELECT K.TAG_ID,T.CAL_NAME FROM SHW.RPT_MN_TAG_DFLT_FEE_MM AS K INNER JOIN WI.MN_CAL_LIST_DST AS T

ON  K.TAG_ID=T.TAG_ID  AND  K.TIME_ID=20120515 AND  K.CNTY_ID='E398' WITH UR




对应的接口文件为LeadKPIDataMapper .java:

public interface LeadKPIDataMapper {
public List findKPIData();
}


在测试过程中,系统总是出现如下异常:

java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.talkweb.mapper.lead.LeadKPIDataMapper.findKPIData
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:594)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:436)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:428)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:188)
at org.apache.ibatis.binding.MapperMethod.(MapperMethod.java:51)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)

经过排查,解决上述异常的过程如下:

1.确定xml文件中中的namespace是否路径正确(在此案例中namespace与实际路径一致),由于namespace不同会引发此问题

2.确定xml文件的名称是否与接口类的名称保持一致,在上例中出现问题就是因为不小心将xml文件命名为LendKPIDataMapper.xml,而接口文件为:LeadKPIDataMapper.java。一字之差导致异常的发生。

总结:细心,仔细,认真是程序开发之根本。


你可能感兴趣的:(MyBatis中出现Mapped Statements collection does not contain value异常解决方案)