spring整合mybatis时,自己写了一个junit测试,结果报
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zpf.mapper.IUserMapper.findUserById
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)
at com.sun.proxy.$Proxy6.findUserById(Unknown Source)
at com.zpf.junit.JunitTest.t1(JunitTest.java:23)
...
于是自己开始一点一点的排查问题
1.首先查看applicationContext中配置的bean是否配置正确
2.查看你的sqlMapConfig.xml对应的文件
我是这里被坑了,注意:
如果mappers中使用 <package name = " " />
或者 <mapper class = " " />
这两种方式中的其中一种方式指定时,mapper接口名称和mapper映射文件名称要相同,且放在同一个目录中。
如果mappers中使用 <mapper resource= " " />
这种方式使用相对于类路径的资源 ,不需要mapper接口名称必须和mapper映射文件名称相同,也不需要放在同一个目录中。
3.在检查接口对应的userMapper.xml文件
1.namespace要和接口的全名称对应
2.id 要和接口中的方法名称一致,以及输入参数和输出参数也要一致.
嗯,到这里应该就可以排查出哪里出问题了。