mybatis的XML文件

SQL映射文件頂級元素有cache孵运,cache-ref秦陋,resultMap,sql治笨,insert驳概,update,delete旷赖,select顺又。

  1. select,對每個(gè)插入等孵、更新或刪除操作稚照,通常都對應(yīng)多個(gè)查詢操作。select元素有多個(gè)屬性。
  • id 在命名空間中唯一的標(biāo)識(shí)符果录,可以被用來引用這條語句上枕。
  • parameterType,參數(shù)類型弱恒,完全限定名或別名辨萍,這個(gè)屬性是可選的,mybatis可以通過TypeHandler推斷出傳入?yún)?shù)的具體類型斤彼,默認(rèn)為unset分瘦。
  • resultType,select語句返回的期望類型琉苇。不能和resultMap同時(shí)使用
  • resultMap嘲玫,外部resultMap的引用,不能和resultType同時(shí)使用
  • flushCache并扇,select為false去团,其他語句為true,false表示不刷新本地緩存和二級緩存穷蛹。
  • useCache土陪,默認(rèn)為true,true表示把結(jié)果被二級緩存
  • timeout肴熏, 拋出異常之前鬼雀,驅(qū)動(dòng)程序等待數(shù)據(jù)庫返回請求結(jié)果的秒數(shù)。默認(rèn)值為 unset(依賴驅(qū)動(dòng))蛙吏。
  • fetchSize源哩, 每次批量返回的結(jié)果行數(shù)和這個(gè)設(shè)置值相等。默認(rèn)值為 unset(依賴驅(qū)動(dòng))鸦做。
  • statementType励烦,有三個(gè)候選項(xiàng),Statement泼诱,Prepared坛掠,Callable
  • resultSetType FORWARD_ONLY,SCROLL_SENSITIVE 或 SCROLL_INSENSITIVE 中的一個(gè)治筒,默認(rèn)值為 unset (依賴驅(qū)動(dòng))屉栓。
  • databaseId, 如果配置了 databaseIdProvider耸袜,MyBatis 會(huì)加載所有的不帶 databaseId 或匹配當(dāng)前 databaseId 的語句系瓢;如果帶或者不帶的語句都有,則不帶的會(huì)被忽略句灌。
  • resultOrdered夷陋, 這個(gè)設(shè)置僅針對嵌套結(jié)果 select 語句適用:如果為 true欠拾,就是假設(shè)包含了嵌套結(jié)果集或是分組了,這樣的話當(dāng)返回一個(gè)主結(jié)果行的時(shí)候骗绕,就不會(huì)發(fā)生有對前面結(jié)果集的引用的情況藐窄。這就使得在獲取嵌套的結(jié)果集的時(shí)候不至于導(dǎo)致內(nèi)存不夠用。默認(rèn)值:false酬土。
  • resultSets荆忍, 這個(gè)設(shè)置僅對多結(jié)果集的情況適用,它將列出語句執(zhí)行后返回的結(jié)果集并每個(gè)結(jié)果集給一個(gè)名稱撤缴,名稱是逗號分隔的刹枉。
  1. Insert和update可以使用useGeneratorKeys和keyProperty屬性,可以返回?cái)?shù)據(jù)庫在執(zhí)行這個(gè)語句時(shí)內(nèi)部生成的主鍵屈呕。mapper.xml代碼:

    <insert id="insert" useGeneratedKeys="true" keyProperty="id" >
    insert into student (id, name, grade_id
    )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{gradeId,jdbcType=SMALLINT}
    )
    </insert>

返回的主鍵被設(shè)置為插入實(shí)體對象的id屬性中微宝。

  1. sql,定義可重用的代碼塊虎眨。
  2. paremeters蟋软,mybatis的參數(shù)類型可以自動(dòng)判斷,也可以定義自己的typeHandler嗽桩。如果 null 被當(dāng)作值來傳遞岳守,對于所有可能為空的列,JDBC Type 是需要的碌冶。
  3. resultMap的屬性有id湿痢,type,autoMapping扑庞。它的子元素有
  • constructor譬重,類在實(shí)例化時(shí),用來注入結(jié)果到構(gòu)造方法中
    • idArg嫩挤,ID 參數(shù);標(biāo)記結(jié)果作為 ID 可以幫助提高整體效能
    • arg害幅,注入到構(gòu)造方法的一個(gè)普通結(jié)果
  • id消恍,一個(gè) ID 結(jié)果;標(biāo)記結(jié)果作為 ID 可以幫助提高整體效能
  • result岂昭,注入到字段或 JavaBean 屬性的普通結(jié)果,ID和Result的區(qū)別是ID對應(yīng)的是數(shù)據(jù)庫表的主鍵狠怨。這兩個(gè)元素的屬性有约啊,property,column佣赖,javaType恰矩,jdbcType(JDBC 類型是僅 僅需要對插入,更新和刪除操作可能為空的列進(jìn)行處理。這是 JDBC jdbcType 的需要,)憎蛤,typeHandler
  • association外傅, 一個(gè)復(fù)雜的類型關(guān)聯(lián);許多結(jié)果將包成這種類型纪吮。關(guān)聯(lián)元素處理"has a"類型的關(guān)系,mybatis有兩種不同的關(guān)聯(lián)加載方式:
    • 嵌套查詢:通過執(zhí)行另外一個(gè) SQL 映射語句來返回預(yù)期的復(fù)雜類型设预。通過select屬性
    • 嵌套結(jié)果:使用嵌套結(jié)果映射來處理重復(fù)的聯(lián)合結(jié)果的子集篮灼。首先,然讓我們來查看這個(gè)元素的屬性逝她。所有的你都會(huì)看到,它和普通的只由 select 和
      resultMap 屬性的結(jié)果映射不同。
  • collection冰肴,復(fù)雜類型的集合,和關(guān)聯(lián)類似榔组。要映射嵌套結(jié)果集合到 List 中,我們使用集合元素熙尉。就像關(guān)聯(lián)元素一樣,我們可以從 連接中使用嵌套查詢,或者嵌套結(jié)果。在嵌套查詢和嵌套結(jié)果中和association不同的是搓扯,它有一個(gè)ofType检痰,表示集合中元素的類型。
  • discriminator擅编,使用結(jié)果值來決定使用哪個(gè)結(jié)果映射攀细,和java switch類似
    • case,基于某些值的結(jié)果映射
  1. 緩存爱态,如果要開啟二級緩存谭贪,需要添加<cache>。效果如下:
  • 映射語句文件中的所有 select 語句將會(huì)被緩存锦担。
  • 映射語句文件中的所有 insert,update 和 delete 語句會(huì)刷新緩存俭识。
  • 緩存會(huì)使用 Least Recently Used(LRU,最近最少使用的)算法來收回。
  • 根據(jù)時(shí)間表(比如 no Flush Interval,沒有刷新間隔), 緩存不會(huì)以任何時(shí)間順序 來刷新洞渔。
  • 緩存會(huì)存儲(chǔ)列表集合或?qū)ο?無論查詢方法返回什么)的 1024 個(gè)引用套媚。
  • 緩存會(huì)被視為是 read/write(可讀/可寫)的緩存,意味著對象檢索不是共享的,而 且可以安全地被調(diào)用者修改,而不干擾其他調(diào)用者或線程所做的潛在修改。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磁椒,一起剝皮案震驚了整個(gè)濱河市堤瘤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浆熔,老刑警劉巖本辐,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異医增,居然都是意外死亡慎皱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門叶骨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茫多,“玉大人,你說我怎么就攤上這事忽刽√煲荆” “怎么了夺欲?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長今膊。 經(jīng)常有香客問我洁闰,道長,這世上最難降的妖魔是什么万细? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任扑眉,我火速辦了婚禮,結(jié)果婚禮上赖钞,老公的妹妹穿的比我還像新娘腰素。我一直安慰自己,他們只是感情好雪营,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布弓千。 她就那樣靜靜地躺著,像睡著了一般献起。 火紅的嫁衣襯著肌膚如雪洋访。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天谴餐,我揣著相機(jī)與錄音姻政,去河邊找鬼。 笑死岂嗓,一個(gè)胖子當(dāng)著我的面吹牛汁展,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厌殉,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼食绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了公罕?” 一聲冷哼從身側(cè)響起器紧,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楼眷,沒想到半個(gè)月后铲汪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摩桶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年桥状,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帽揪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝清。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖转晰,靈堂內(nèi)的尸體忽然破棺而出芦拿,到底是詐尸還是另有隱情士飒,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布蔗崎,位于F島的核電站酵幕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缓苛。R本人自食惡果不足惜芳撒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望未桥。 院中可真熱鬧笔刹,春花似錦、人聲如沸冬耿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亦镶。三九已至日月,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缤骨,已是汗流浹背爱咬。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绊起,地道東北人台颠。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像勒庄,于是被迫代替她去往敵國和親串前。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

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