千家信息网

mybatis使用Integer类型查询出现的问题怎么解决

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本文小编为大家详细介绍"mybatis使用Integer类型查询出现的问题怎么解决",内容详细,步骤清晰,细节处理妥当,希望这篇"mybatis使用Integer类型查询出现的问题怎么解决"文章能帮助
千家信息网最后更新 2025年01月19日mybatis使用Integer类型查询出现的问题怎么解决

本文小编为大家详细介绍"mybatis使用Integer类型查询出现的问题怎么解决",内容详细,步骤清晰,细节处理妥当,希望这篇"mybatis使用Integer类型查询出现的问题怎么解决"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

使用Integer类型查询出现的问题

mapper.xml :

比如:

                    and  m.state = #{page.entity.state}                

当state这个值为0的时候

mybatis为默认为空字符串"",所以如果状态这种类似的场景有0值得,查询就不要加上xxxx!=""这种。或者or xxx==0

代码示例:

1、

     and  m.state = #{page.entity.state}

2、

    and  m.state = #{page.entity.state}

mybatis判断Integer遇到的bug

场景产出

需要查出状态为0的所有用户

我是这样写的

1.mapper:

BaseUser selectUserByStatus(@parm("status") Integer status);

这里传了0进去

2.sql:

SELECT * FROM base_user WHERE status=0

3.xml片段

    status = #{status},

4.结果真正执行的sql

SELECT * FROM base_user

小结一下:

test="status != null and status != ''"这个是拿来判断String的!!!也就是说Double,BigDecimal等数字类型也会出现这样的情况

1.如果是Integer类型的话,如果变量的值是0,即 num = 0, mybatis在进行 num != '' " 的时候会认为 num 的值是空字符串;直接跳过判断了

所以如果是Integer类型只需要判断 != null 即可

2.如果String类型需要判断不等于0,则需要写name != '0'.toString(),否则会报错。

读到这里,这篇"mybatis使用Integer类型查询出现的问题怎么解决"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0