激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - MyBatis使用動態SQL標簽的小陷阱

MyBatis使用動態SQL標簽的小陷阱

2020-06-23 11:38心路無途 JAVA教程

MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架,MyBatis越來越受大家的喜愛了。下面給大家分享MyBatis使用動態SQL標簽的小陷阱,感興趣的朋友一起看看吧

 MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

現在MyBatis越來越受大家的喜愛了,它的優勢大家都知道,我就不多說了,直接說重點。

  MyBatis中提供動態SQL功能,我們可以使用<if><when><where><otherwise><foreach>等等,這樣我們就可以寫出根據條件生成的動態SQL了,但是,在這中間,我們經常用到的<if>標簽有一個小誤區,一不小心就會掉下去,下面先舉個正常的例子:

?
1
2
3
4
5
6
7
8
<select id="findActiveBlogWithTitleLike"
parameterType="Blog" resultType="Blog">
SELECT * FROM BLOG
WHERE state = ‘ACTIVE'
<if test="title != null">
AND title like #{title}
</if>
</select>

  在上面的例子中,當title不等于null時,<if>標簽中間的條件才會被拼接上,這樣,SQL語句就是動態的了。

  但是,當我們對所有條件進行判斷時,你是否會這樣寫:

?
1
2
3
4
5
6
7
8
9
10
11
<select id="findActiveBlogWithTitleLike"
parameterType="Blog" resultType="Blog">
SELECT * FROM BLOG
WHERE
<if test="userId != null">
state = ‘ACTIVE'
</if>
<if test="title != null">
AND title like #{title}
</if>
</select>

  沒問題吧?至少語法上不錯的,至少它可以正常生成一個SQL。

  但是,不知道你注意到了沒,當所有條件都為null的時候,會出現什么情況?

?
1
2
SELECT * FROM BLOG
WHERE

  看到了吧?這樣的SQL能成功執行么?

  答案當然是NO。

  那么該怎么辦?那就要記住了,當你寫動態SQL時候,先考慮一下會不會產生所有條件都不成立的情況,會不會出現只有一個WHERE而沒有條件的情況,那么你要做的就是加一個<where>標簽將所有條件包起來。

?
1
2
3
4
5
6
7
8
9
10
11
12
<select id="findActiveBlogWithTitleLike"
parameterType="Blog" resultType="Blog">
SELECT * FROM BLOG
<where>
<if test="userId != null">
state = ‘ACTIVE'
</if>
<if test="title != null">
AND title like #{title}
</if>
</where>
</select>

  這樣,當所有條件都不成立時,WHERE也不會被拼上。

  這時,有機靈的小伙伴發現了,如果第一個條件不成立,第二個成立,那SQL會不會變成這樣?

?
1
2
3
SELECT * FROM BLOG
WHERE
AND title like #{title}

  這個就放心好了,當你用<if>標簽包圍條件后,它會自動去掉AND的。

以上所述是小編給大家介紹的MyBatis使用動態SQL標簽的小陷阱,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/xinluwutu/archive/2016/10/13/5952285.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 草草久久久 | 日本不卡二区 | 欧美精品一区二区久久 | 欧洲精品久久久久69精品 | 中文字幕欧美一区二区三区 | 国产精品视频久久久 | 国产精品区在线12p 午夜视频在线免费播放 | 国产拍拍拍三级费视频在线观看 | 免费黄色在线电影 | 中文字幕在线观看视频www | 91羞羞| 国产国语毛片 | 久久精品.com | 91精品最新国内在线播放 | 一区二区久久久久草草 | 国产免费大片视频 | 成人午夜免费看 | 欧洲色阁中文字幕 | 亚洲免费观看视频 | 香蕉久久久精品 | 福利一区二区三区视频在线观看 | 蜜桃欧美性大片免费视频 | 99视频在线观看视频 | 久久老司机 | 午夜精品一区二区三区免费 | 视频国产一区二区 | 亚洲第一成网站 | 国产亚洲精品久久久久5区 男人天堂免费 | 日本www黄色 | 久久精品成人影院 | 美女wc | 一区二区三区欧美在线观看 | 日日天日日夜日日摸 | 国产69精品久久久久久久久久 | 福利在线免费 | 一区二区三区日韩电影 | 久久综合一区二区 | 香蕉视频18 | 91九色丨porny丨国产jk | 亚洲小视频在线播放 | 久久久久久久久久久久久久国产 |