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

网友投稿 278 2022-08-21


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

目录使用Integer类型查询出现的问题当state这个值为0的时候mybatis判断Integer遇到的bug场景产出我是这样写的

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

mapper.xml :

select count(m.id) from hr_push_msg_model as m

m.text like '%${page.keyword}%'

and m.text like '%${page.entity.text}%'

and m.title like '%${page.entity.title}%'

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

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

比如:

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判断ekRaXyOWnInteger遇到的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 != '' " 的时候会认为 &nbsekRaXyOWnp;num 的值是空字符串;直接跳过判断了

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

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot开发详解之Controller接收参数及参数校验
下一篇:Spring Cloud Ribbon 中的 7 种负载均衡策略的实现方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~