首頁 > 軟體

mybatis if test 不為空字串或null的解決

2022-12-01 14:04:00

mybatis if test 不為空字串或null

<sql id="public_content">
  	<if test="productId != null and productId !=''" >
        and  a.product_id = #{productId,jdbcType=VARCHAR}
      </if>
      <if test="productDefinId != null" >
        and a.product_defin_id = #{productDefinId,jdbcType=VARCHAR}
      </if>
      <if test="productUid != null and productUid !=''">
        and a.product_uid = #{productUid,jdbcType=VARCHAR}
      </if>
      <if test="productKey != null" >
        and a.product_key = #{productKey,jdbcType=VARCHAR}
      </if>
      <if test="prouuctSecret != null" >
        and a.prouuct_secret = #{prouuctSecret,jdbcType=VARCHAR}
      </if>
      <if test="productPass != null" >
        and a.product_pass = #{productPass,jdbcType=VARCHAR}
      </if>
      <if test="productVisitPass != null" >
        and a.product_visit_pass = #{productVisitPass,jdbcType=VARCHAR}
      </if>
      <if test="createTime != null and createTime !=''" >
        and a.create_time = #{createTime,jdbcType=VARCHAR}
      </if>
      <if test="pageSize != null and pageNum !=null " >      
         ORDER BY a.product_id DESC limit #{pageNum},#{pageSize}
      </if>
  </sql>

mybatis中if test判斷數值字串注意項

    <if test="cutList != null">
        <if test="isInterrupt == '1'.toString() ">
        AND A.basic_id IN (
         <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>
            <if test="isInterrupt == '0'.toString() ">
        AND A.basic_id NOT IN (
        <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>
    </if>                       

1. Mybatis中 if test 判斷數值字串注意項

if test 判斷是否為某一數值字串時需在數值字串後加上toString()方法

如:

<if test="isInterrupt == '1'.toString() ">

2. Mybatis中遍歷list入參

此處還有個知識點是mybatis使用foreach標籤來遍歷入參list。

如:

    <if test="isInterrupt == '1'.toString() ">
        AND A.basic_id IN (
        <foreach collection="cutList" item="item" index="index" separator="," >
                     #{item}
              </foreach>
                )
            </if>

collection為需遍歷陣列,item為當前迴圈的變數,index為計數器,separator=","指回圈一次則以“,”分隔

這裡IN 的()可以直接用open="(" close=")"屬性設定

<foreach collection="cutList" item="item" index="index" open="(" close=")" separator="," >

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com