Mybatis動態(tài)標簽

大家好蒙兰,我是IT修真院,一枚正直純潔善良的如剛?cè)腴T的Java程序員捏雌,今天試著給大家分享一下關(guān)于mybaits動態(tài)標簽的內(nèi)容


背景介紹

mybatis是什么?說起用JDBC訪問數(shù)據(jù)庫闻丑,除了需要自己寫SQL之外叭披,還要操作Connection, Statment, ResultSet 這些手輔助性質(zhì)的代碼;

訪問不同的表诞吱,還會寫很多雷同的代碼寻定,繁瑣和枯燥辖源。而用Mybatis蔚携,只需要提供關(guān)鍵性的SQL語句,其他的工作克饶,像加載驅(qū)動,建立連接酝蜒,Statement,

JDBC相關(guān)的一些動作交給Mybatis彤路,減少重復性的工作秕硝,更多的關(guān)注在增刪改查等操作層面上,把技術(shù)細節(jié)封裝在底層


知識剖析

傳統(tǒng)的使用JDBC的方法洲尊,有時候需要組合復雜的的SQL語句远豺,還需要去拼接,稍不注意什么空格坞嘀,引號;都會導致錯誤躯护。Mybatis的動態(tài)SQL功能正是為了解決這種問題,

其通過 if, choose, when, otherwise, trim, where, set, foreach標簽丽涩,可組合成非常靈活的SQL語句棺滞,從而提高開發(fā)人員的效率。


編碼實戰(zhàn)

最大的問題就是不會用,直接看代碼吧,小demo


常用


更多討論

1;mybatis中sql語句的#{}占位符和${}占位符有什么區(qū)別?

${}是Properties文件中的變量占位符矢渊,它可以用于標簽屬性值和sql內(nèi)部继准,屬于靜態(tài)文本替換,比如${driver}會被靜態(tài)替換為com.mysql.jdbc.Driver矮男。#{}是sql的參數(shù)占位符移必,Mybatis會將sql中的#{}替換為?號,在sql執(zhí)行前會使用PreparedStatement的參數(shù)設置方法毡鉴,按序給sql的?號占位符設置參數(shù)值崔泵,


2;MyBatis中的標簽和where子句的區(qū)別?

一個是標簽,一個是sql語句,二者可以達到同樣的效果,但是前者更靈活


3;set和if?兩個都可以判斷兩個條件是不是空,這兩個有啥區(qū)別 ?

一個用于update;另一個if更準確的說是where,適用于select


4;Mybatis是如何將sql執(zhí)行結(jié)果封裝為目標對象并返回的猪瞬?

通過設置返回值類型,resulttype/resultmap


5;當實體類中的屬性名和表中的字段名不一樣 憎瘸,怎么辦 ?

會查詢出null;這個時候可以再開頭設置號map;對應字段;類似于起別名


6;數(shù)據(jù)庫字段有下劃線?

同上;

7;動態(tài)標簽和動態(tài)sql???

不一個概念;一個是標簽;一個是注解的sql語句


8;set的時候我傳一個Student進去陈瘦,都不為null幌甘,但是我只想改他的體重字段能不能辦到,按照if !=null的話含潘,三個字段都會update吧?

你傳進去三個,但是只接受倆.......



9;type和map???

MyBatis中在查詢進行select映射的時候饲做,返回類型可以用resultType,也可以用resultMap遏弱,resultType是

直接表示返回類型的盆均,而resultMap則是對外部ResultMap的引用,但是resultType跟resultMap不能同時存在漱逸。

在MyBatis進行查詢映射時泪姨,其實查詢出來的每一個屬性都是放在一個對應的Map里面的,其中鍵是屬性名饰抒,值則是其對應的值肮砾。①當提供的返回類型屬性是resultType時,MyBatis會將Map里面的鍵值對取出賦給resultType所指定的對象對應的屬性袋坑。

所以其實MyBatis的每一個查詢映射的返回類型都是ResultMap仗处,只是當提供的返回類型屬性是resultType的時候,MyBatis對自動的給把對應的值賦給resultType所指定對象的屬性枣宫。②當提供的返回類型是resultMap時婆誓,

因為Map不能很好表示領(lǐng)域模型,就需要自己再進一步的把它轉(zhuǎn)化為對應的對象也颤,這常常在復雜查詢中很有作用洋幻。


參考文獻

http://blog.csdn.net/jpzhu16/article/details/52810747

https://www.cnblogs.com/dongying/p/4092662.html

https://www.cnblogs.com/zkongbai/p/5336015.html

http://how2j.cn/k/mybatis/mybatis-tutorial/1087.html?p=13495


PPT

視頻

歡迎加入java任務體系


多多指教,錯誤之處!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翅娶,隨后出現(xiàn)的幾起案子文留,更是在濱河造成了極大的恐慌,老刑警劉巖竭沫,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燥翅,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜕提,警方通過查閱死者的電腦和手機权旷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贯溅,“玉大人,你說我怎么就攤上這事躲查∷常” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵镣煮,是天一觀的道長姐霍。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么镊折? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任胯府,我火速辦了婚禮,結(jié)果婚禮上恨胚,老公的妹妹穿的比我還像新娘骂因。我一直安慰自己,他們只是感情好赃泡,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布寒波。 她就那樣靜靜地躺著,像睡著了一般升熊。 火紅的嫁衣襯著肌膚如雪俄烁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天级野,我揣著相機與錄音页屠,去河邊找鬼。 笑死蓖柔,一個胖子當著我的面吹牛辰企,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渊抽,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蟆豫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了懒闷?” 一聲冷哼從身側(cè)響起十减,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愤估,沒想到半個月后帮辟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡玩焰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年由驹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔园。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔓榄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出默刚,到底是詐尸還是另有隱情甥郑,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布荤西,位于F島的核電站澜搅,受9級特大地震影響伍俘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勉躺,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一癌瘾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饵溅,春花似錦妨退、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至糖赔,卻和暖如春萍丐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背放典。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工逝变, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奋构。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓壳影,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弥臼。 傳聞我的和親對象是個殘疾皇子宴咧,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容