一、问题描述
2022-03-23 16:54:53.299 ERROR 5316 --- [nio-8089-exec-9] c.d.rest.config.GlobalExceptionHandler : 捕获全局异常[BindingException], msg: [Invalid bound statement (not found): com.dimpt.alert.service.AlertTemplateService.getDTOById]
2022-03-23 16:55:58.803 ERROR 5316 --- [nio-8089-exec-2] c.d.rest.config.GlobalExceptionHandler : 捕获全局异常[BindingException], msg: [Invalid bound statement (not found): com.dimpt.alert.service.AlertTemplateService.addTemplate]
二、什么原因可能造成这种异常?
1、mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)?
2、mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致?
3、接口的方法名,与xml中的一条sql标签的id一致
4、如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType。
5、如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的pom.xml的里面,加这么一段:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
我这里采用的是注解Mapper的形式,以上情况都不是
三、实际出现问题的原因
把service包下面的内容也被MapperScan注解扫描进来了,导致下面的AlertTemplateService是MapperProxy类型,也就出现了上面的异常
四、解决方法
采用精确扫描,不要把service层也扫描进来
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122956.html