關於mybatis的條件選擇語句,

    關於mybatis的條件選擇語句,一般用<if>sql語句</if>,類似於java中的if(){do something}else{do something},會使用<choose><when>ddd</when><choose>這樣,但是一般不會使用的循環嵌套的寫法。

如果有一個sql,先判斷外層,外層判斷完事在判斷裏層,這就牽扯到了循環嵌套。我們來看一個例子:

  <select id="getAllHotelData" resultType="hotelInfoModel" parameterType="com.elong.vrmanage.model.SearchParamModel">
        SELECT * from vote_hotel_detail
        <where>
            1=1
            <if test="hotelName !=null">
                and hotelName like CONCAT('%',#{hotelName},'%')
            </if>
            <if test="hotelId !=null">
                and  hotelId=#{hotelId}
            </if>
            <if test="activityId!=0">
                <choose>
                    <when  test="hotelids !=null">
                        AND hotelId in
                        <foreach collection="hotelids" item="item" open="(" separator="," close=")">
                            #{item}
                        </foreach>
                    </when>
                <otherwise>
                       AND hotelId in (SELECT hotel_id FROM vr_activity_hotel where activity_id=#{activityId})
                </otherwise>
 
                </choose>
            </if>
        </where>
        ORDER BY id DESC limit #{page},#{pageSize}
    </select>

這個就是判斷了activityid不爲空,然後再次判斷hotelids是不是爲空,雙重條件決定執行語句


————————————————
版權聲明:本文爲CSDN博主「我是程序員老兵」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012932720/article/details/53431623

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章