Mybatis中sql語句中的in查詢,判斷null和size為0的情況


不嚴謹的寫法,可能會報錯:in (),這種情況不符合SQL的語法,導致程序報錯。

如果簡單只做非空判斷,這樣也有可能會有問題:本來in一個空列表,應該是沒有數據才對,卻變成了獲取全部數據!

 

所以一個比較周全的方法是:

    <select id="findLastPoolTaskIdsForMo" resultMap="poolTaskResult">
        SELECT  MIN(p.pool_task_id) AS pool_task_id
        FROM    pool_task p
        WHERE r_type != 2
        <if test="moCodeList != null and moCodeList.size>0">
            AND p.mo_code IN
            <foreach collection="moCodeList" item="item" index="index" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="moCodeList==null or moCodeList.size==0">and 1=0</if>
        GROUP BY p.mo_code
    </select>

如上,加2個if判斷,如果為空則永遠讓語句查詢不到數據  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM