org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 错误解决方式

起因

  在打包后执行jar包是会出现如下错误:

  Invocation of init method failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):com.***.***.;

分析

  主观分析:

    应该是namespace或者注解扫描位置错误导致无法加载xml文件。

解决

  1、检查namespace是否一致

  2、检查配置文件中的包扫描位置是否正确

结果

  namespace配置、方法名称、包扫描位置都正确。但是依旧会出现如上错误。

 

查找前人踩过的坑

  参考的文章:解决问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): - 简书 (jianshu.com)

再次尝试解决

  按照文章中的两步操作

    1、检查target文件夹下的mapper

    

 

    发现是将其编译进去了

    2、在pom中添加resource标签,将静态文件强制打包进去

    

 

结果: 

  push之后使用Jenkins+docker发布依旧是最开始的错误。

 

再次分析

  将线上打包的jar下载到本地。解压后发现了问题所在:

 

 

 线上Jenkins拉去代码后并没有按照约定的建mapper/job文件夹,而是直接建了一个mapper.job的文件夹。

 但配置文件中做的扫描位置又是classpath:mapper/**/*.xml 与目前jar中的文件夹名不匹配,所以无法加载。

 

再次尝试

  让mapper.job包建为两个文件夹即可。

  博主采用的是在mapper文件夹下创建了一个与job文件夹同级的README.md文件。

  解决问题的同时还可以提醒后期接手小伙伴注意此问题。

 

最终结果

  bug解决

 

  

 

posted @ 2022-05-09 09:57  l48x4264l46  阅读(3878)  评论(1编辑  收藏  举报