Mybatis中传0值会匹配到非空字符串判断‘’

例子:
需要列表筛选禁用和启用数据

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>

你可能感兴趣的:(mybatis,java)