错误信息片段:
ERROR 35188 --- [nio-8090-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.usermanage.mapper.UserMapper.listAll] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.usermanage.mapper.UserMapper.listAll at org.apache.ibatis.binding.MapperMethod
这是一个关于MyBatis的异常。错误信息表明在尝试执行名为com.example.usermanage.mapper.UserMapper.listAll
的语句时,发生了绑定异常。
( ↑ 这个是我们自己创建的包的路径,其中listAll是方法名)
可能的原因和解决方法包括:
检查Mapper XML文件或Mapper接口: 确保在
com.example.usermanage.mapper.UserMapper
接口对应的XML文件或接口方法中存在名为listAll
的SQL映射。在XML文件中应该有一个类似<select id="listAll" ...>
的语句或在接口中有一个对应的方法定义。检查语句命名是否正确: 确保
listAll
的命名在XML文件或者接口中是准确的,包括大小写和拼写。MyBatis非常严格对待语句的命名,所以即使是一个小小的拼写错误也会导致找不到语句的异常。检查是否正确配置了Mapper扫描: 如果是通过扫描方式配置Mapper接口的,确保配置类或XML文件中正确指定了Mapper接口所在的包路径。
检查SQL语句逻辑: 如果语句是存在的,但是逻辑上有问题,也可能会导致类似的异常。检查SQL语句的正确性和逻辑是否符合预期。
重新编译和部署代码: 如果对Mapper或SQL语句做了修改,确保已经重新编译并正确部署了代码。
此处我的UserMapper中定义的是listAll方法:
但当时UserMapper的XML文件中,id没有设为listAll,所以连接不到此方法。
解决方法:改为<select id="listAll" ....>即可