mybatis语法if判断Long,Integer,Short数据类型的坑

Mybatis数据类型做判断总结,很容易出错又难找

Integer类型,这个类型在写判断的时候,在开发中我们常会这么写

 

Integer a

<If test  =“ a != null  and a !=’ ’ “ >

执行语句

</if>

有时会发现带不上这个条件。抛开来看Mybatis中的语法,一个Integer类型的字段等于一个空字符串。在一种可能下成立的,那就是当a =0时,Mybatis才会为’ ’。

那么当a=0时,a!=null条件成立,a!= ‘’ 这个条件不成立。所以执行语句不拼接。所以保险的写法

<If test  =“ a != null “ >

执行语句

</if>

 

Long类型的字段,可能认为Long字段的跟Integer一样的。

Long a

<If test  =“ a != null “ >

执行语句

</if>

也是这么写,在插入某个对象时a字段的值没有set。也就是为空,数据库打印时发现这个if条件执行了,也就是说这个if条件成立的。分析下来:a的值未传递,也是就是空值。空值到mybatis的if条件时a!=null.那就说明a字段的值确实不是null,那明明没传,a的值为多少。Long字段类型,如果不传值为空。Mybatis默认字段值为0。除非是你在set值时指定了setA(null).这样才算传的null。所以条件判断这样写才没问题。

<If test  =“ a != null and a != ‘ ’  “ >

执行语句

</if>

 

MyBatis中,使用XML配置进行条件判断时,可以使用`<if>`标签来实现动态SQL。对于Long类型的参数,同样可以使用`<if>`标签进行判断。在进行条件判断时,需要注意一些特殊情况,比如Long类型可能为null的问题。在SQL中进行比较时,直接比较null值是不正确的,应该使用`is null`或`is not null`来判断。 以下是一个使用`<if>`标签对Long类型参数进行条件判断的示例: ```xml <select id="selectByAge" resultType="User"> SELECT * FROM users <where> <if test="_parameter != null"> AND age > #{age} </if> </where> </select> ``` 在这个例子中,我们假设传入的参数是一个名为`age`的Long类型参数。`<if>`标签中的`test`属性用于判断该参数是否不为null。如果不为null,则会执行`<if>`标签内的SQL语句,即添加`AND age > #{age}`到最终的查询语句中。注意,我们使用了`#{age}`来引用参数值,并且没有必要在参数值后添加`!= null`,因为`<if>`标签的`test`属性已经包含了非null的判断。 此外,如果你的条件逻辑更复杂,比如需要判断Long值是否在一个范围内,你可以这样写: ```xml <if test="startAge != null and endAge != null"> AND age BETWEEN #{startAge} AND #{endAge} </if> ``` 这里,`startAge`和`endAge`都是传入的Long类型参数,我们在`<if>`标签的`test`属性中使用了逻辑运算符`and`来确保两个参数都不为null时才执行`BETWEEN`查询。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值