摘要:理解與掌握動態框架就是簡單的條件判斷,利用語句我們可以實現某些簡單的條件選擇。有了元素我們就可以動態的更新那些修改了的字段。
MyBatis理解與掌握(動態SQL)
@(MyBatis)[Java, 框架, MyBatis]
ifif 就是__簡單的條件判斷 __,利用if語句我們可以實現某些簡單的條件選擇。
先來看如下一個例子:
在JDBC中如果要實現條件查詢,采用的是拼串的方式,而且sql語句往往和java代碼混雜在一起,非常麻煩。
choose(when,otherwise)choose元素的作用就相當于JAVA中的switch語句,基本上跟JSTL中的choose的作用和用法是一樣的,通常都是與when和otherwise搭配的。看如下一個例子:
when元素表示當when中的 條件滿足的時候就輸出其中的內容 ,只有一個會輸出 ,當title!=null的時候就輸出and titlte = #{title},不再往下判斷條件,當title為空且content!=null的時候就輸出and content = #{content},當所有條件都不滿足的時候就輸出otherwise中的內容。
wherewhere語句的作用主要是 簡化SQL語句中where中的條件判斷 ,先看一個例子,再解釋一下where的好處。
(1)會在寫入where元素的地方輸出一個where
(2)如果所有的條件都不滿足那么MyBatis就會查出所有的記錄
(3)如果輸出后是and 開頭的,MyBatis會把第一個and忽略,當然如果是or開頭的,MyBatis也會把它忽略
(4)在where元素中你不需要考慮空格的問題,MyBatis會智能的幫你加上
insert into bbs_brand name, description, img_url, sort, is_display values#{name}, #{description}, #{imgUrl}, #{sort}, #{isDisplay}
trim元素的主要功能是可以在自己包含的內容前加上某些前綴,也可以在其后加上某些后綴,與之對應的屬性是prefix和suffix.
可以把包含內容的首部某些內容覆蓋,即忽略,也可以把尾部的某些內容覆蓋,對應的屬性是prefixOverrides和suffixOverrides;
set元素主要是用 在更新操作的時候在包含的語句前輸出一個set 。
有了set元素我們就可以動態的更新那些修改了的字段。下面是一段示例代碼:
update user u where id=#{id} u.username = #{userName}, u.sex = #{sex}
(1)如果包含的語句是以逗號結束的話將會把該逗號忽略
(2)如果set包含的內容為空的話則會出錯
foreach的主要用在 構建in條件中 ,它可以在SQL語句中進行迭代一個集合 。
foreach元素的屬性主要有:
item表示集合中每一個元素進行迭代時的別名
index指定一個名字,用于表示在迭代過程中,每次迭代到的位置
open表示該語句以什么開始
separator表示在每次進行迭代之間以什么符號作為分隔符
close表示以什么結束
collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:
(1)果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
public ListdynamicForeachTest(List ids);
(2)如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
public ListdynamicForeach2Test(int[] ids);
(3)如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map里面的key
public ListdynamicForeach3Test(Map params);
基于3.3.1版本驗證的新特性
(4)foreach標簽遍歷的集合元素類型是Map.Entry類型時,index屬性指定的變量代表對應的Map.Entry的key,item屬性指定的變量代表對應的Map.Entry的value。此時如果對應的集合是Map.entrySet,則對應的collection屬性用collection。foreach在進行遍歷的時候如果傳入的參數是List類型,則其collection屬性的值可以是list或collection,但如果傳入的參數是Set類型,則collection屬性的值只能用collection。
public ListbinddynamicForeachTest(Set > ids);
bind標簽,動態SQL中已經包含了這樣一個新的標簽,它的功能是在當前OGNL上下文中創建一個變量并綁定一個值。
有了它以后我們以前的模糊查詢就可以改成這個樣子:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77158.html
摘要:語句在代碼中硬編碼,造成代碼不易于維護,實際應用變化的可能較大,變動需要改變代碼。對結果集解析存在硬編碼查詢列名,變化導致解析代碼變化,系統不易于維護,如果能將數據庫記錄封裝成對象解析比較方便。 MyBatis理解與掌握(簡介) @(MyBatis)[Java, 框架, MyBatis] 簡介 ??Mybatis是一個數據持久層框架,MyBatis消除了幾乎所有的JDBC代碼和參數的手...
摘要:輸入參數類型指定輸入參數類型,通過從輸入對象中獲取參數值放置在中。查詢結果處理指定輸出結果類型,將查詢結果的一行記錄數據映射為指定類型的對象。 MyBatis理解與掌握(輸入與輸出) @(MyBatis)[Java, 框架, MyBatis] 占位符和拼接 {}:占位符 能防止sql注入問題,所一能盡量用#{}就盡量用#{}用來傳入參數,sql在解析的時候會加上 當成字符串來解析 ,...
摘要:理解與掌握緩存框架一級緩存默認就可以使用框架處理緩存是依賴映射,的內部緩存使用一個,為語句。一級緩存的作用域是一個,一旦發生變化,一級緩存失敗在同一個中,執行相同的查詢,第一次會去查詢數據庫,并寫到緩存中第二次直接從緩存中取。 MyBatis理解與掌握(緩存) @(MyBatis)[Java, 框架, MyBatis] 一級緩存(SqlSession) 默認就可以使用 框架處理緩存是 ...
摘要:我認為學習框架源碼分為兩步抓住主線,掌握框架的原理和流程理解了處理思路之后,再去理解面向對象思想和設計模式的用法目前第一步尚有問題,需要多走幾遍源碼,加深下理解,一起加油 這篇文章我們來深入閱讀下Mybatis的源碼,希望以后可以對底層框架不那么畏懼,學習框架設計中好的思想; 架構原理 架構圖 showImg(https://segmentfault.com/img/remote/...
摘要:理解與掌握原理分析框架功能架構接口層提供給外部使用的接口,開發人員通過這些本地來操作數據庫。流程分析數據處理過程根據的查找相應的對象。預處理對象,得到對象。傳入和結果處理對象,通過的方法來執行,并對執行結果進行處理。 MyBatis理解與掌握(原理分析) @(MyBatis)[Java, 框架, MyBatis] 功能架構 showImg(https://segmentfault.co...
閱讀 3477·2021-09-06 15:13
閱讀 1527·2021-09-02 10:19
閱讀 2473·2019-08-30 15:52
閱讀 918·2019-08-29 15:25
閱讀 1565·2019-08-26 18:36
閱讀 495·2019-08-26 13:23
閱讀 1331·2019-08-26 10:46
閱讀 3498·2019-08-26 10:41