最近项目中遇到一个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喽,查找起来起来好麻烦的。。。

转载于:https://www.cnblogs.com/yinzhida/p/10459963.html

mybatis中因为不理解$与#而出现的bug相关推荐

  1. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  2. MyBatis中#{}和${}的区别

    ------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...

  3. Mybatis中Oracle和Mysql的Count字段问题

    Mybatis中Oracle和Mysql的Count字段问题 我们在进行项目开发时经常会碰到查询总数的问题,所以我们直接是用select count(1) from table来进行查询.那么在Myb ...

  4. MyBatis中jdbcType=INTEGER、VARCHAR作用

    Mapper.xml中 pid = #{pid,jdbcType=INTEGER} pid = #{pid} 都可以用 Mybatis中什么时候应该声明jdbcType? 当Mybatis不能自动识别 ...

  5. Mybatis 中$与#的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  6. MyBatis中使用流式查询避免数据量过大导致OOM

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...

  7. 解决MyBatis中 Could not set property ~ o f ~异常

    解决MyBatis中 Could not set property ~ of ~ public class Role {private Integer id; //idprivate String r ...

  8. 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义

    今天突然碰到这个错误,让我复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义 nested exception is org.apache.ibatis.ex ...

  9. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

最新文章

  1. Go 学习笔记(76)— Go 标准库 net/http 创建客户端(发送 GET、POST 请求)
  2. oracle根据一张表更新另外一张表
  3. PreparedStatement
  4. hung-yi lee_p22_无监督学习:词嵌入
  5. 疯狂的程序员-第三章
  6. 安卓如何调出软键盘_智能汽车到底如何交互?小鹏用全场景语音给出了答案
  7. linux系统下top命令的详细用法、参数详解、以及模式配置
  8. 用jekyll制作高大上的网站(二)——实际应用
  9. Codeforces 817F MEX Queries
  10. Hi3518EV200学习记录之运行mpp/sample/sample_venc(ov9712)
  11. 机械计算机辅助设计考研,华科机械考研
  12. PR简单压缩视频、音频、调整音频声音大小
  13. 使用opencv的viz模块显示3d点云
  14. mysql innodb文件存储_MySQL数据库和InnoDB存储引擎文件
  15. android和苹果位置共享,苹果和安卓手机修改微信共享位置方法。
  16. 同态滤波 matlab,基于Matlab的同态滤波器的优化设计
  17. 规范化理论:范式等级
  18. C语言中的int类型的范围是由什么决定的
  19. XML学习笔记3——XSD简述
  20. 智象运维 | 如何利用snmp trap监控交换机端口状态(Up/Down)

热门文章

  1. list redis 怎样做排行_list类型的应用场景 —— Redis实战经验
  2. java请求url加密_URL请求对参数前端JS加密,后台JAVA解密
  3. 交流磁路matlab,严格地说,交流磁路计算应该用磁滞回线。
  4. 头部导航菜单选中状态切换
  5. vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题
  6. wordpress页面里可不可以写php,如何在WordPress页面中创建不同的可编辑部分?
  7. CentOS下安装Tomcat并配置JRE
  8. 简单的java信息显示_JSP实现简单的用户登录并显示出用户信息的方法
  9. mysql数据完整性约束包括_MYSQL回顾(完整性约束相关)
  10. android studio编译找不到程序包,AndroidStudio编译提示“程序包R不存在”可能的解决方案,希望你用不到。。。-Go语言中文社区...