Springboot中mybatis踩坑解决方案

59 篇文章 5 订阅
6 篇文章 0 订阅

一、问题描述

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层也扫描进来

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值