mybatis将传入的Integer类型的0被识别成空字符串的问题

记录一下情况:

数据库中共有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>

但是至于为什么会这样,以后再挖掘。奋斗

文章写得很搓,大家可以参考下别人的:

参考链接

猜你喜欢

转载自blog.csdn.net/jqc874789596/article/details/80700927
今日推荐