Springboot部署运行Mapper绑定异常

问题描述:

项目本地运行没有问题,但是在部署到远程服务器时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。

项目背景描述:

项目是用springboot开发,Modules分为dao、entity、service、web。mapper.xml都在dao的resources中。启动类和yml配置都在web中,然后配置类也加上@MapperScan(“xx.xx.xx.dao”)了,mybatis的配置也 配置好了mapper-locations: classpath*:mapper/*.xml。

解决办法:

将yml文件中的mybatis的配置mapper-locations: classpath:mapper/.xml,改为mapper-locations: classpath*:mapper/.xml。看好了,在classpath后加上星。

思考解决过程:

1.看到这个错误当时的第一想法是dao方法对应的mapper有问题,然后接着去本地运行项目,结果启动成功,流畅运行。
2.因为之前本地运行也碰到过相应的问题,clean了重新编译运行就好了,就又打包上传到远程服务器部署运行,结果还是报错。
3.然后就有点蒙了,就又仔细的检查了和mapper相关的所有配置,都没有问题。
4.网上浏览相关问题,网上在pom.xml的bulid中有以下配置,配置打包后还是不行。
在这里插入图片描述
5.之后就对比本地运行和打包运行的区别。
(1)class中是web层的代码,lib是依赖的相关jar包
在这里插入图片描述
(2)这是lib中dao、entity、serivce的jar包
在这里插入图片描述
这就发现问题了,web里配置的mybatis对应的mapper扫描是不是扫描不到dao的jar包,然后上网搜索相关问题,结果还真是。
6.这就问题简单了,本地运行各模块没有被打成jar包可以扫描到相关路径,就可以正常运行。打包后Springboot只能扫描启动类所在模块。

发布了66 篇原创文章 · 获赞 125 · 访问量 26万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章