数据有0和1的值,如果需要传0值筛选,但是sql.mapper里面不能做param!=‘’,这样的非空字符串判断。
例子:
需要列表筛选禁用和启用数据
if (StringUtils.isNotEmpty(status) && !"all".equalsIgnoreCase(status)) {
if (status.equalsIgnoreCase(ActiveTypeEnum.ENABLE.getCode())) {
condition.put("active", 1);
} else {
condition.put("active", 0);
}
}
<select id="findByPage" resultType="com.test.User">
SELECT
<include refid="baseColumns"/>
FROM user u
WHERE u.type = #{condition.type}
<if test="condition.active != null">
AND u.active = #{condition.active}
</if>
order by
<if test="condition.sort != null and condition.sort != ''">
u.${condition.sort} ${condition.order},
</if>
u.updated_at DESC
</select>
错误❌例子:
integer类型传入0值会匹配到 condition.active != ‘’
从而使得sql没携带active的条件
<select id="findByPage" resultType="com.test.User">
SELECT
<include refid="baseColumns"/>
FROM user u
WHERE u.type = #{condition.type}
<if test="condition.active != null and condition.active !=''">
AND u.active = #{condition.active}
</if>
order by
<if test="condition.sort != null and condition.sort != ''">
u.${condition.sort} ${condition.order},
</if>
u.updated_at DESC
</select>