MyBatis中if,where,set标签
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                MyBatis中if,where,set标签
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                <if>標簽?
<select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null">AND title like #{title}</if> </select>if標簽通常伴隨著where,set出現。當增加查詢條件的時候有下面的代碼
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if> </select>但是當state屬性也需要動態表示的時候則變成
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE <if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if> </select>此時會出現當state為null時,sql語句會變為 select * from BLOG WHERE AND...解決此問題則引入<where><set>等標簽.
<where>標簽
<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG <where> <if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if></where> </select>where 元素知道只有在一個以上的if條件有值的情況下才去插入“WHERE”子句。而且,若最后的內容是“AND”或“OR”開頭的,where 元素也知道如何將他們去除。
如果 where 元素沒有按正常套路出牌,我們還是可以通過自定義 trim 元素來定制我們想要的功能。比如,和 where 元素等價的自定義 trim 元素為:
? <trim prefix="WHERE" prefixOverrides="AND |OR ">... </trim>同理當需要更新數據時使用<set>標簽
<update id="updateAuthorIfNecessary">update Author<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password},</if><if test="email != null">email=#{email},</if><if test="bio != null">bio=#{bio}</if></set>where id=#{id} </update>?
轉載于:https://www.cnblogs.com/dyc940210/p/7371672.html
總結
以上是生活随笔為你收集整理的MyBatis中if,where,set标签的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Python 字典删除元素clear、p
- 下一篇: Flink中的CEP复杂事件处理 (源码
