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只能扫描启动类所在模块。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值