mybatis if标签判断问题 为何48=='0'?

丶轩 2018-12-31 06:00:55
最近遇到一个很奇怪的问题。
问题是这样的,业务流程里面有一块要显示用户的统计数据,但是有一个用户的统计数据明显出错,一看就是统计成了全部用户。
通过查询发现mybatis的if标签有如下判断


<if test="userId !='' and userId !=null and userId !='0'">
user_id = #{userId,jdbcType=BIGINT}
</if>


ID为48的的用户无法进入这条判断,简单的写了个测试类,发现0和48进不来这个判断


<if test="userId !='' and userId !=null">
user_id = #{userId,jdbcType=BIGINT}
</if>

于是就将这条不等于零的判断去掉了,去掉之后就可以了。
后面我查了查mybatis if标签判断问题 只查到了说如何判零,如何判字符串。
我很好奇 为何48这个数字也会这么特殊,我自己跟了一下mybatis的代码,没有找到具体的判断。
希望有大佬解答一下。
...全文
748 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionsarmstrong 2019-01-02
  • 打赏
  • 举报
回复
楼上正解,比较字符串不要用== !=
幽饮烛 2019-01-02
  • 打赏
  • 举报
回复
字符的 0 对应的ASCII码就是 48,不要拿数字和 char 对比。
bcsflilong 2019-01-02
  • 打赏
  • 举报
回复

<if test="userId !='' and userId !=null and userId !='0'.toString()">
user_id = #{userId,jdbcType=BIGINT}
</if>


0 这里可以看作是一个常量
咸哼酒家 2019-01-01
  • 打赏
  • 举报
回复
<if test=" userId !=null"> user_id = #{userId,jdbcType=BIGINT} </if>
咸哼酒家 2019-01-01
  • 打赏
  • 举报
回复
userId !='' 适用于字符串,遇到int类型,直接跳出if判断,你的userId是bigint java里面int属于基本类型,和string可不一样

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧