例子:
需要列表筛选禁用和启用数据
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 uWHERE 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 uWHERE 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>