Mybaits動態Sql解析

在這裏插入圖片描述
什麼是動態SQL?

MyBatis的強大之處便是它的動態SQL,如果你使用JDBC那麼在根據不同條件查詢時,拼接SQL語句是多麼的痛苦。 比如查詢一個學生信息,可以根據學生的姓名,性別,班級,年齡,學歷等信息來查詢,並且多個條件可以任意組合。 而MyBatis中集成了非常強大的 OGNL表達式,可以幫助我們解決這個問題。

if標籤

if標籤作爲mybatis動態sql中的條件判斷,它可以判斷你是否傳入某個字段的值以決定你是否執行這條sql語句。

<select id="selectIf" parameterType="Map" resultMap="Employee">
select * from tal_employee where 1=1
<if test="lastName!=null and lastName!=''">
and last_name=#{lastName},
</if>
<if test="email!=null and email!=''">
and email=#{email},
</if>
<if test="gender!=null and gender!=''">
and gender=#{gender},
</if>
</select>
使用IF標籤可以完成我們的動態sql語句並且,我們很多時候可能判斷這個的時候卻又不判斷那個,我們只好分成幾個方法寫,有了這個if標籤我們就可以很好根據業務需求完成自己的語句拼接合併成一個方法。

where標籤

where標籤可以替代if和choose標籤,不需要添加多餘的where 1=1條件。當where中的條件沒有一個滿足時,不輸出where關鍵字。如果條件滿足,會去掉第一個開頭的and或者or。

<select id="findAll" resultMap="Employee" parameterType="Map">
select * from tal_employee

and last_name=#{lastName} and email=#{email} and gender=#{gender} choose標籤 有些時候,我們不想用到所有的條件語句,而只想從中擇其一二。 choose標籤爲Mybatis中的提供多重條件判斷,使用when和otherwise標籤進行條件判斷,多個條件中只有一個被執行。 set標籤 set標籤主要用於在update更新值時,動態添加更新的列,如果列沒有值則不添加。避免使用多餘的,號。 update tal_employee last_name=#{lastName}, email=#{email}, gender=#{gender}, where id = #{id} 有了set這個標籤就想指定更新那個字段就是那個字段,高端大氣上檔次。 trim標籤 where默認是將第一個的and或者or去掉,set是將更新中的,去掉,如果用戶想自定義一些規則,則需要使用另外一個自定義標籤。 Mybaits動態Sql解析 foreach標籤 foreach標籤這個標籤是用來迭代我們的集合對象,它支持list,array,map。它有屬性: collection:循環集合或指定類型 item:每次迭代的結果 separator:設置分隔符 open:開始符號(前綴)可選 close:結束符號(後綴)可選 index:list和數據的序號,可選 SQL標籤 用來定義常量,通過include來引用 select * from tal_employee 加Java架構師進階交流羣獲取Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走很多的彎路的 羣.號是 338549832 對了 小白勿進 最好是有開發經驗 注:加羣要求 1、具有工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。 2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。 3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。 4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。 5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶着大家全面、科學地建立自己的技術體系和技術認知!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章