栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis if test 条件参数为0的一个坑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis if test 条件参数为0的一个坑

问题描述

今天发现mybatis if test 条件参数为0的一个坑,在此记录一下

主要内容如下

原代码,我是要用用户id作为参数进行拼接查询的

  
         and ds.user_id=#{sign.userId}
  

 看起来好像没什么问题,就是userId不为空的时候,进行拼接查询,然后我就调用接口

 查出来的数据是不对的,我看了下日志执行的sql如下

select ds.id, ds.company_name, ds.title, ds.user_id, ds.confirm_time , ds.remark, ds.sign_type, dsi.signator_status, dsi.company_name as otherCompanyName from dmyz_sign ds left join dmyz_signator dsi on ds.id = dsi.sign_id where ds.is_deleted = 0 

很明显没有把参数加进来,也就是说在if标签判断里面 0是没用通过的

通过查询资料发现

在mybatis查询时。遇到这种如果传进来的的参数值为0 ,直接跳出if不执行

问题在于参数类型
’’ != userId 只能作用于string,int 、double、float等类型的参数默认值为0 ,将直接跳出if,
删掉后面的空字符串判断即可

解决方案

改为这种方式

 
                and ds.user_id=#{sign.userId}

再次运行,完美解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号