java之mybatis之動態sql


1. if 判讀條件是否滿足,滿足將會把 sql 語句加上。

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user where 1=1 
        <if test="name!=null">
            and name like '${name}%'
        </if>
</select>

2. choose, when, otherwise -----when可以有多個

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user where 1=1 
        <choose>
            <when test="name!=null">
                and name like '${name}%'
            </when>
            <otherwise>
                and age=23
            </otherwise>
        </choose>
    </select>

3.where 標簽 判斷是否有條件成立

如果有條件則加上 where,如果沒有則不加。

where元素知道插入“where”如果它包含的標簽中有內容返回的話。

此外,如果返回的內容以“AND”或者"OR"開頭,它會把“AND”獲取“OR”去掉。

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user 
        <where>
            <if test="name!=null">
                 name like '${name}%'
            </if>
            <if test="age>23">
                and age=23
            </if>
        </where>
    </select>

4. trim----overrides屬性使用了管道分隔的文本列表來覆寫,而且它的空白也是不能忽略的。

這樣的結果是移出了指定在 overrides屬性里字符,而在開頭插入 prefix屬性中指定的字符。

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user 
        <trim prefix="order by" prefixOverrides="AND |OR ">
            <if test="age>23">
                and age desc
            </if>
        </trim>
    </select>

5. foreach ----經常使用到的功能是集合迭代,通常用在 IN條件句。

<select id="findUser" parameterType="list" resultType="User">
        select * from t_user 
        <where>
            id in 
            <foreach collection="list" item="var" 
            open="(" close=")" separator=",">
                #{var}
            </foreach>
        </where>
    </select>

 


免責聲明!

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



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