java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Invalid bound statement (not

出现异常后,就开始了漫长的网络搜索解决方案之旅,可以查到很多这种异常的相关博客或说明,但基本内容都差不多.也在网上查了好久,就是不知道原因:网上说的也大同小异,下面有我在网上查到的解释,以及我自己的总结:

在这里插入图片描述
,通常可能导致这个异常出现的原因有以下几种:

(1) mapper接口类和mapper.xml是否在同一个包下,文件名称是否一致(仅后缀不同):经过实际检验,这个并不需要在同一个包下面,通常mapper.xml文件是存放在src/main/resources目录下,而mapper接口类是在src/main/java目录下面;名称是否相同也不重要,我的命名分贝为NumberDao.java和NumberMapper.xml,实际也可以运行成功
(2)mapper.xml的namespace是否是对应接口类的全名(包括包名和类名):这个是必须要保证相同,需要进行检查,而且全类名最好通过复制,不要自己手动拼写,容易出错
(3)mapper接口类的方法名是否与mapper.xml中sql标签的id相同:这个也需要进行检查,必须保证一致
(4)mapper.xml文件中用resultMap,而不用resultType(当sql操作结果是List或其他复杂结果集时):我经过实践检验,我的查询结果是一个Integer的List集合,用resultMap反而报错,异常信息如下:
在这里插入图片描述

(5) 到target目录下看是否有mapper.xml文件生成(按照自己对mapper.xml文件的路径配置到target下classes目录下找),如果没有可以在pom.xml文件的之间添加

																																				1 <resources>

2 3 src/main/resources 4 5 **/*.xml 6 7 8

也可以再在之间再添加一项

1
2 src/main/java
3
4 **/*.xml
5
6

使mapper.xml文件不论是放在src/main/resources或src/main/java下都可以被打包到classes目录下。

在这里插入图片描述搜了许多,终于找到了答案,的确是xml映射文件的问题,在代码生成器后,拷贝代码时,xml映射文件没有拷贝,才导致报错

猜你喜欢

转载自blog.csdn.net/weixin_42595331/article/details/86524380
今日推荐