场景3:mybatis-xml动态查询条件中实现if else的效果
SQL写法
<where> <if test="sInfoWindcode != null and sInfoWindcode != ''"> AND a.s_info_windcode = #{sInfoWindcode} </if> <if test="sInfoWindcode == null || sInfoWindcode == ''"> <![CDATA[ LIMIT 50 ]]> </if>> </where>或者
<choose> <when test="processStatus != null && processStatus != '' && processStatus != '-110'"> and process_status = #{processStatus,jdbcType=VARCHAR} </when> <otherwise> and process_status != 1 </otherwise> </choose>
场景1:mybatis-xml查询条件字段的值是一个数组,也即前端的条件筛选的值可以多个
参数定义:
private String[] marketListBoardName;
SQL写法:
<if test="marketListBoardName != null and marketListBoardName != ''"> AND ad.MARKET_LISTBOARDNAME IN <foreach collection="marketListBoardName" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </if>
场景2:mybatis-xml查询条件字段的值是数字字符串如1或者y,如下写法的判断条件将不起作用
<if test="type == '1'"> AND a.S_DIV_PROGRESS != '3' </if> <if test="type == 'y'"> AND a.S_DIV_PROGRESS != '3' </if>
更改为:
<if test='type == "1"'> AND a.S_DIV_PROGRESS != '3' </if> <if test="type == '1'.toString()"> AND a.S_DIV_PROGRESS != '3' </if> <if test='type == "y"'> AND a.S_DIV_PROGRESS != '3' </if>