Mybatis的xml中使用if/else標簽的具體使用

使用if標簽進行查詢

		SELECT
			orderNo,
			adname,
			orderstatus
		FROM
			order_A
		where
			<if test="order!=null">
				order=#{order}
			</if>
			<if test="title!=null">
				and title=#{title}
			</if>

需要註意的是:如果第一個if的order為null的話 第二值title也為null的話運行會報錯,就算第一個if等於null 那麼查詢語句變成 where and title='哈哈哈' 這樣運行的話也會出現錯誤。

where標簽出場

		SELECT
			orderNo,
			adname,
			orderstatus
		FROM
			order_A
		<where>
			<if test="order!=null">
				order=#{order}
			</if>
			<if test="order!=null">
				and title=#{title}
			</if>
		</where>

where 元素隻會在至少有一個子元素的條件返回 SQL 子句的情況下才去插入WHERE子句。而且,若語句的開頭為AND或OR,where 元素也會將它們去除。這個隻能解決2個值都為空。
不能解決order值為空但是title值為空時還是會出現語句錯誤的情況,這個時候我們可以在and 前面用1=1或者true來解決

如:

或這樣

if/else 使用 choose,when,otherwise 代替

由於Mybatis中沒有else標簽但是可以通過choose,when,otherwise來使用

SELECT
			orderNo,
			adname,
			orderstatus
FROM
	<choose>
		<when test=" platformtype != null and platformtype.trim() != '' and platformtype == 1">
			 `orders_A` as orderTable
		</when>
		<when test=" platformtype != null and platformtype.trim() != '' and platformtype == 2">
			 `orders_B` as orderTable
		</when>
		<when test="  platformtype != null and platformtype.trim() != '' and platformtype == 3">
			 `orders_C` as orderTable
		</when>
		<otherwise>
			 `orders_A` as orderTable
		</otherwise>
	</choose>

翻譯一下上面的語句:

當platformtype 值不為空並且把platformtype 值進行去除空字符串,並且值等於1時
就會把表orders_A進行拼接,如果條件都不符合的話就會走otherwise標簽默認拼接orders_A表進行查詢

choose,when,otherwise標簽有點像Java中的switch 當where的test值滿足時會拼接裡面的表,otherwise表示其他when標簽都不滿足時執行拼接

到此這篇關於Mybatis的xml中使用if/else標簽的具體使用的文章就介紹到這瞭,更多相關Mybatis xml=使用if/else標簽內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: