项目中遇到了一个问题,mybatis在使用中遇到了一个小问题,困扰了不久。因业务变动需要在原来的sql中,新增一个字段进行模糊查询,
增加前:
comm_id like '%${commId}%' OR organ_id like '%${organId}%'
增加后:
comm_id like '%${commId}%' OR organ_id like '%${organId}%' OR project_idlike '%${project_id}%'
原以为只是一个简单的小事,没想到却出现了问题。在本地测试均无任何问题,但是将代码提交后,部署到测试服务器后,出现了问题。项目层级的查询不管用,先是在本地分支上排查,但是无论怎么测试都没问题,只要一部署测试服务器就不行,数据库配置都是一样的不存在数据不一致的问题。
后来查看测试服务器日志打印发现传递的项目参数对象的值也没有问题,但是传进去的参数成了一个类似包名的东西。
OR project_id LIKE '%com.xxx.xxx:xxx-xxx-server:jar:1.0-ROP-SNAPSHOT-DEV%'
最终的解决方案是换了一种传参方式:
project_id like concat('%', #{projectId}, '%')
虽然问题解决了,但还是不是很清楚,其中的原理,没道理前两个传参都没问题,就第三个有问题。