记录一下情况:
数据库中共有5条数据;
前台是个combobox下拉框,如图:
mapper文件部分代码:
当我选中“0”的时候,后台应该会接受到0的数据然后进行条件查询,但是结果出人意料,却把库里的5条数据全部查了出来,明明是个条件查询(应该是这样的: select .. from .. where 关键字段='0')。为了看看底层的sql,把日志级别改成DEBUG重启一下,看一下控制台sql的输出....
很奇怪,接收到的参数居然是空的,现在F12看一下network,数据明明传过去了
扫描二维码关注公众号,回复:
1725371 查看本文章
经过大佬的指点,后来求证在网上搜索一番,果然是存在这样一个问题:
当传入为0的时候,会被识别成“ ”,空字符串,根据mapper文件里的代码来看,自然就不会进入判断的sql,所以就是全查询了。
但是有没有什么办法解决呢?答案还是有滴:
现在更改mapper文件的sql如下:
重启项目,重新测一遍,再看一下数据,查出来了一条,是我想要的,看一下控制台的sql
这样就传进来了,完美解决!
总结一下问题:Interger类型的数据,当为0的时候传到后台,会被识别成" "(空字符串)处理。
<if test="roleOrder != null and roleOrder != ''"> and t.roleOrder = #{roleOrder} </if>
改成
<if test="roleOrder != null "> and t.role_order = #{roleOrder} </if>
但是至于为什么会这样,以后再挖掘。
文章写得很搓,大家可以参考下别人的: