代码部署后,所有数据库操作报Invalid bound statement,原来是打包的问题
[问题描述]
前段时间将打包后的代码部署到测试环境运行,结果所有对数据库操作的代码报错,如下所示:
Invalid bound statement (not found): com.xxcloud.dao.UserMapper.getKeysInfo,
[org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225),
org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48),
org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65),
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58),
com.sun.proxy.$Proxy147.getKeysInfo(Unknown Source),
这个错误眼熟,就是mapper字段绑定异常。可以肯定的是,就是我部署前,代码都是在正常运行的。那么,我推断,跟我打包有关系,肯定是什么地方的配置有问题。
同时,叫另外一个同事重新打包部署,果然是OK的。这印证了我的推断。
将可以运行的包下载到本地,解压后,跟我本地打的包进行对比,主要有三个地方:
1、所有的Mapper.xml文件是不是有打包进去。
2、配置文件中的是否有配置扫描mapper文件
mybatis-plus.mapper-locations
3、我们的配置文件都是分成dev、pro、test三份的,所以检查有没被引入。
经过对比发现,果然有问题。
同事的配置是这样的
spring.profiles.active=devw
我的配置是这样的
spring.profiles.active=@spring.profiles.active@
这明显不对,但是我又不知道到底为什么变量“@spring.profiles.active@”没有替换为dev。
在网络上换着关键词查,当我看到下面这个图时,突然想起来,前段时间我在引入jar包的时候,曾经修改过这个配置。
勾选dev,再次打包,果真跟同事的一样了。
----------------------------------------------------------------------------
我的小鱼你醒了,
还认识早晨吗?
昨夜你曾经说,
愿夜幕永不开启。
你的香腮边轻轻滑落的,
是你的泪,还是我的泪?
初吻吻别的那个季节,
不是已经哭过了吗?
我的指尖还记忆着,
你慌乱的心跳。
温柔的体香里,
那一缕长发飘飘。