mybatis中因为不理解$与#而出现的bug
2024-09-01 21:00:41
最近项目中遇到一个bug,正常的流程是这样的:要上传一个应用,首先检查系统中是否已经存在这个应用的更高版本,如果存在,则上传操作将被取消。
bug体现为当传入系统中存在的所有应用与新上传的应用的versioncode都小于10,则上传能够成功,而当传入一个versioncode=10的应用时判断存在更高版本,操作被取消。复现并定位这个问题以后,考虑到对比versioncode处的代码应该有问题,查看如下:
mapper.xml里有这样一句:
and t.versioncode >= #{versioncode}
这样转为sql后为:and t.versioncode>=
"10",
也就是说这里进行了一次字符串的比较,比较的结果是9>'10'
知道问题的原因了,bug修改如下:
and t.versioncode >= ${versioncode}
这样转为sql后为:and t.versioncode>=
10,也就是说这里进行了一次数字的比较,比较的结果是9<10
问题解决了,希望同志们不要再出这样的bug喽,查找起来起来好麻烦的。。。
最新文章
- ios NSURLSession completeHandler默认调用quque
- oracle初次使用连接不上
- 使用Chrome+node-inspector查找NodeJS内存泄漏
- sass进阶篇总结一
- 再探CRC
- UVa11183 Teen Girl Squad, 最小树形图,朱刘算法
- Amazing ASP.NET Core 2.0
- Java_循环
- leetcode 813. Largest Sum of Averages
- 理解OpenShift(7):基于 Prometheus 的集群监控
- 关于C#关闭窗体后,依旧有后台进程在运行的解决方法
- python------Socket网络编程(二)粘包问题
- 【Alpha】第九次Scrum meeting
- 关于sudo 权限被修改的解决方法
- JavaScript的深拷贝和浅拷贝总结
- Android SDK的安装与环境配置
- mysql replace语句
- 20145201 《Java程序设计》第六周学习总结
- js 获取 Url.Action 设置area
- [已解决]windows下python3.x与python2.7共存版本pip使用报错问题