解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。

1.xml的namespace必须是mapper所在的包名

2.mapper中方法的名称和xml中sql语句不一致,找不到指定的sql

3.xml中sql的返回值类型没有配置为resultMap

前三个为大部分情况下原因,下来是一些实际情况下我的解决方法,仅供参考:

1. mybatis的配置问题。

接收某个模块的开发后,模块在其他同事的PC完美运行,在我这里所有接口都是找不到mapper,经检查是配置文件出现错误,原配置(其余相关配置略,仅提供mybatis扫描配置):

mybatis:
  mapper-locations:
  - classpath:mapper/*.xml

修改后:

mapper-locations: classpath*:mapper/**/*.xml # mybatis对应的xml文件路径

修改完成,问题消失。

 

2.未加载问题

有些情况是一些不可描述原因 ,在xml文件中增加一个空格,再删除,或者是清理整个项目以后再运行,即可解决问题。

 

 

 

 

 

寻找问题发生原因的思路:

1.先确定问题范围:是该接口 还是该类下面所有接口,还是整个模块下所有接口,问题小多为映射问题,问题大多为整体配置问题。

2.确定问题原因:是具体发生在哪部分,如这个问题就是发生在mybatis上,所以解决方案需要从mybatis整体的配置到运行上入手。

3.多对比:如果找不到原因,跟类似的多对比。类似的项目,类似的模块。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值