日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis动态sql中的where标签的使用

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis动态sql中的where标签的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: https://blog.csdn.net/wobuaizhi/article/details/81874664

在使用mybatis的動態sql時,有時候遇到根據條件判斷添加where后面的篩選條件。

會出現多余的“and”或者“or”,如下:

??? <select id="findBlog"
???????? resultType="Blog">
????? SELECT * FROM BLOG
????? WHERE
????? <if test="state != null">
??????? state = #{state}
????? </if>
????? <if test="title != null">
??????? AND title like #{title}
????? </if>
??? </select>

如果第一個參數“state”為空,那么sql會變成下面這樣,

select * from blog where and title like

如果兩個if都為空,那么輸出為,

select * from blog where

顯然這樣的sql執行時,會發生錯誤。

這時候使用where標簽就可以解決這個問題,

??? <select id="findBlog"
???????? resultType="Blog">
????? SELECT * FROM BLOG
????? <where>
??????? <if test="state != null">
???????????? state = #{state}
??????? </if>
??????? <if test="title != null">
??????????? AND title like #{title}
??????? </if>
????? </where>
??? </select>

where 元素只會在至少有一個子元素的條件返回 SQL 子句的情況下才去插入“WHERE”子句。而且,若語句的開頭為“AND”或“OR”,where 元素也會將它們去除。

當然我們也可以用“trim”標簽來處理。

??? <trim prefix="WHERE" prefixOverrides="AND |OR ">
????? ...
??? </trim>

prefix:前綴, prefixoverride:去掉第一個“and”或者是“or”

“trim”標簽還有其他屬性,

suffixoverride:去掉最后標記的字符(就像是上面的and一樣)

suffix:后綴

?

參考文獻:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html

?

總結

以上是生活随笔為你收集整理的mybatis动态sql中的where标签的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。