mybatis的choose ... when用法

 

一、choose標籤

        choose標籤在mybatis的xml文件中,一般與when標籤結合使用,  主要用於條件查詢,根據不同的情況來進行頁面查詢,choose的執行原理如下: 如果有一個when滿足,那麼choose結束, choose會按照when標籤的順序來執行,如果when執行的結果都會false,那麼會執行otherwise標籤裏的語句。

二、實例SQL    

<choose>
            <when test="range == 'all'">
              <!-- 全選 -->
              AND 1 = 1
            </when>
            <when test="range == 'selected'">
                <if test="documentType == 801012">
                    <!-- 費用預提單類型  選擇的-->
                    AND EXISTS (select 1 from exp_accrual_expense_type a where a.exp_accrual_type_id = #{documentTypeId} and a.exp_expense_id = t.id)

                </if>
                <if test="documentType == 801006">
                  <!-- 費用調整單類型  選擇的-->
                  AND EXISTS (select 1 from exp_adjust_type_assign_e_t a where a.exp_adjust_type_id = #{documentTypeId} and a.exp_expense_id = t.id)

                </if>
                <if test="documentType == 801001">
                    <!-- 報賬單類型  已選的費用類型-->
                    AND EXISTS (select 1 from exp_report_type_expense_type ertet where ertet.report_type_id = #{documentTypeId} and ertet.expense_type_id = t.id)

                </if>
            </when>
            <otherwise>
                <if test="documentType == 801012">
                    <!-- 費用預提單類型 未選的-->
                    AND NOT EXISTS (select 1 from exp_accrual_expense_type a where a.exp_accrual_type_id = #{documentTypeId} and a.exp_expense_id = t.id)
                </if>
                <if test="documentType == 801006">
                  <!-- 費用調整單類型 未選的-->
                    AND NOT EXISTS (select 1 from exp_adjust_type_assign_e_t a where a.exp_adjust_type_id = #{documentTypeId} and a.exp_expense_id = t.id)
                </if>
                <if test="documentType == 801001">
                    <!-- 報賬單類型  未選的費用類型-->
                    AND NOT EXISTS (select 1 from exp_report_type_expense_type ertet where ertet.report_type_id = #{documentTypeId} and ertet.expense_type_id = t.id)

                </if>
            </otherwise>
        </choose>

 

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