国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠干最新网址 | 视频在线一区二区 | 久久精品一区二区国产 | 一本一本久久a久久精品综合妖精 | 北条麻妃99精品青青久久主播 | 午夜激情视频网站 | 久久窝 | 欧美操穴| 91在线区| 欧美一区永久视频免费观看 | 国产精品自产拍在线观看 | 色片在线观看 | 日韩在线| 一级片在线观看 | 久久久久久免费毛片精品 | 中文字幕一区二区三区四区五区 | 91人人看| 免费观看黄色 | 激情综合五 | 精品九九 | 午夜成年人 | 国产毛片欧美毛片久久久 | 日韩在线永久免费播放 | 成人免费毛片高清视频 | 青草久操| 国产欧美综合视频 | 精品久久av | 久久久久综合狠狠综合日本高清 | 日韩成人av电影 | 国产一区不卡 | 91免费在线视频 | 综合自拍偷拍 | 激情在线视频 | 午夜寂寞少妇aaa片毛片 | 午夜国产精品视频 | 九一精品国产 | 日日干夜夜操 | 亚洲免费在线 | 高清久久 | 日韩精品久久久久久 | 久久中文字幕一区 |