正确案例
select * from t_user_info t where 1==1
<if test="userName!=null and userName!=''">
and t.user_name=#{userName}
</if>
1.如果在我们类中设置的类型为interger类型时,只需要判断是否等于null
class user{
private Integer size;
}
那我们mybaits条件只需要不等于null不需要不等于‘’
select * from t_user_info t where 1==1
<if test="size!=null">
and t.user_size=#{size}
</if>
2.还有一种失效可能条件出现小bug
<select id="userInfo" resultType="com.xxx.userInfo">
select * from t_user_info t
where 1=1
<if test="userId!=null and userName=null" >
and t.user_id=#{userId}
</if>
<if test="userName!=null and userName!=''" >
and t.user_name=#{userName}
</if>
</select>
<if test="userId!=null and userName=null" >
在mybais中是可以赋值的,如果userName本身有值,可是我们漏了一个“=”就会变成赋值操作而不是判断,如此下面条件如果有做判断该字段,永远都不会走