Invalid bound statement (not found)

Mybatis环境下运行错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.nj.dao.UserDao.selectCount

原因分析:
第一、没找到对应的java文件(UserDao.java)
第二、找到了对应的java文件,但是该文件未包含相应方法(UserDao.java中没有selectCount方法)

检查步骤:
1、检查映射配置文件UserDao.xml所在的包,是否与UserDao.java所在的包名一致。
对于当前module,即检查UserDao.java所在的包com.nj.dao,是否也是UserDao.xml所在的包。
原理:在编译时,这两个文件是被放在一个包并一起执行的。但一般的,在IEDA显示的文件结构中,我们会将xml文件放在resource包下,java问件放在src包。这两个包名必须一致,否则在执行时无法找到相应文件。
2、检查映射配置文件UserDao.xml中,namespace属性的值,是否为该报名。即:
namespace=“com.nj.dao.UserDao”
3、检查UserDAO.xml和UserDao.java文件中的方法名、参数类型、返回类型是否一致

最终原因:
经检查,以上的2、3均没问题,而且使用MybatisCodeHelperNew-2.7.5-IDEA181-IDEA193组件,均能实现文件间的相互跳转。
最终原因:
1处的com.nj.dao不是一个有层级的包,而只是一个名为com.nj.dao的包,故vm在编译时没有将UserDao.xml文件与UserDao.class文件放在一处,故而找不到该java文件。
Invalid bound statement (not found)_第1张图片
原因追溯:
在建好resource包后,应先“Add directory as”–>“Resources root”, 然后再建包。这时采用“.“表示包的层级关系有效。否则,仅作为包名的一部分。

你可能感兴趣的:(Mybatis)