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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

myBatis xml if、where、if-else?、foreach 心得

發(fā)布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 myBatis xml if、where、if-else?、foreach 心得 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MyBatis 的強大特性之一便是它的動態(tài) SQL。如果你有使用 JDBC 或其它類似框架的經(jīng)驗,你就能體會到根據(jù)不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL 這一特性可以徹底擺脫這種痛苦。
雖然在以前使用動態(tài) SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射語句中的強大的動態(tài) SQL 語言得以改進這種情形。
動態(tài) SQL 元素和 JSTL 或基于類似 XML 的文本處理器相似。在 MyBatis 之前的版本中,有很多元素需要花時間了解。MyBatis 3 大大精簡了元素種類,現(xiàn)在只需學(xué)習(xí)原來一半的元素便可。MyBatis 采用功能強大的基于 OGNL 的表達(dá)式來淘汰其它大部分元素。

if

mapper中編寫sql,使用<if test = ' '> </if>,可以使你的接口很便捷

舉個栗子:

select * from student <if test = " id != null ">where student.id =#{id} </if>

一個<if>標(biāo)簽還是不夠用的,你單獨使用<if>的時候肯定還會遇到這樣的問題

select * from student where <if test = " id != null "> student.id = #{id} </if> <if test = " name != null and name != '' "> and student.name = #{name} </if>

如果當(dāng)你的id為空時,name前面的and是沒有必要的,運行會拋異常
或者當(dāng)這兩個<if>都為空時,只剩一個空的where,還是會報錯

where

select * from student <where> <if test = " id != null ">and student.id = #{id} </if> <if test = " name != null and name != '' ">and student.name = #{name} </if> </where>
  • where 元素只會在至少有一個子元素的條件返回 SQL 子句的情況下才去插入WHERE子句。而且,若語句的開頭為AND或OR,where 元素也會將它們?nèi)コ?/li>

if-else =>> choose, when, otherwise

首先,在myBatis中是不支持if-else的,想要是用if-else的話,可以使用choose代替。
choose,when,otherwise有點像Java中的switch

栗子:

<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’<choose><when test="title != null">AND title like #{title}</when><when test="author != null and author.name != null">AND author_name like #{author.name}</when><otherwise>AND featured = 1</otherwise></choose></select>

關(guān)于mybatis的動態(tài)sql,建議查看,中文哦官方文檔

轉(zhuǎn)載于:https://www.cnblogs.com/lanaiwanqi/p/10445647.html

總結(jié)

以上是生活随笔為你收集整理的myBatis xml if、where、if-else?、foreach 心得的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。