mybatis技術(shù)實(shí)踐課程二

      網(wǎng)友投稿 695 2025-03-31

      Mybatis – SelectKey

      屬性 -描述:

      ① keyProperty : selectKey 語(yǔ)句結(jié)果應(yīng)該被設(shè)置的目標(biāo)屬性。

      ② resultType:結(jié)果的類(lèi)型。MyBatis 通常可以算出來(lái),但是寫(xiě)上也沒(méi)有問(wèn)題。MyBatis 允許任何簡(jiǎn)單類(lèi)型用作主鍵的類(lèi)型,包括字符串。

      ③ order: 這可以被設(shè)置為 BEFORE 或 AFTER。如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語(yǔ)句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語(yǔ)句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫(kù)相似,可以在插入語(yǔ)句中嵌入序列調(diào)用。

      ④ statementType:和前面的相同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 語(yǔ)句的映射類(lèi)型,分別代表PreparedStatement 和CallableStatement 類(lèi)型。

      Mapper文件詳解

      可配置標(biāo)簽:

      select : 映射查詢(xún)語(yǔ)句

      insert: 映射插入語(yǔ)句

      update:映射更新語(yǔ)句

      delete:映射刪除語(yǔ)句

      sql:可被其他語(yǔ)句引用的可重用語(yǔ)句?(與?聯(lián)合使用)

      resultMap:最復(fù)雜也是最強(qiáng)大的元素,用來(lái)描述如何從結(jié)果集中加載對(duì)象

      cache:給命名空間的緩存配置(不用了)

      cache-ref:其他命名空間緩存配置的引用(已經(jīng)不用了)

      parameterMap:已經(jīng)廢棄,老式風(fēng)格的參數(shù)映射

      標(biāo)簽的屬性描述:

      1)id:命名空間中唯一的標(biāo)識(shí)符,可以來(lái)引用該條語(yǔ)句?也是接口的方法名稱(chēng)

      2)parameterType:這里設(shè)置傳入該條語(yǔ)句的參數(shù)類(lèi)的完全限定名或者普通java類(lèi)型

      3)resultType:返回結(jié)果的類(lèi)的完全限定名或者普通java類(lèi)型

      4)resultMap:外部resultMap的命名引用,結(jié)果集的映射是Mybatis最強(qiáng)大的特性

      5)flushCache:如果設(shè)置為true,則任何時(shí)候該語(yǔ)句被調(diào)用,都會(huì)導(dǎo)致本地緩存和二級(jí)緩存都被清空。默認(rèn)是false

      6)useCache:如果設(shè)置為true,將會(huì)導(dǎo)致本條語(yǔ)句的結(jié)果被二級(jí)緩存。默認(rèn)是true

      7)timeout:拋出異常之前,驅(qū)動(dòng)程序等待數(shù)據(jù)庫(kù)返回請(qǐng)求結(jié)果的秒數(shù)

      Mybatis動(dòng)態(tài)SQL

      1:

      2:(不常用,只有更新用)

      3:

      4:foreach

      foreach 也就是遍歷迭代,在SQL中通常用在 in 這個(gè)關(guān)鍵詞的后面

      foreach元素的屬性主要有 item,index,collection,open,separator,close。

      分別代表:

      item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名,

      index用于表示在迭代過(guò)程中,每次迭代到的位置,

      open表示該語(yǔ)句以什么開(kāi)始,

      separator表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔 符,

      close表示以什么結(jié)束

      而最為重要的就是collection屬性了,既然是迭代就表示傳入的參數(shù)是多個(gè),這時(shí)候傳入的參數(shù)就有以下幾種可能:

      1. list

      2. array

      3. map

      注: collection的值為ids,是傳入的參數(shù)Map的key

      TypesAlises

      高級(jí)結(jié)果映射

      多對(duì)一

      注:在查詢(xún)語(yǔ)句中添加主鍵字段(設(shè)置的字段)結(jié)果才正確

      多對(duì)一

      一對(duì)多

      多對(duì)多

      同類(lèi)技術(shù)對(duì)比

      mybatis技術(shù)實(shí)踐課程二

      注意事項(xiàng)及小甜點(diǎn)

      總結(jié)

      1、工作原理

      2、優(yōu)點(diǎn):

      1、簡(jiǎn)單易學(xué)

      mybatis本身就很小且簡(jiǎn)單。沒(méi)有任何第三方依賴(lài),最簡(jiǎn)單安裝只要兩個(gè)jar文件+配置幾個(gè)sql映射文件易于學(xué)習(xí),易于使用,通過(guò)文檔和源代碼,可以比較完全的掌握它的設(shè)計(jì)思路和實(shí)現(xiàn)。

      2、靈活

      mybatis不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響。 sql寫(xiě)在xml里,便于統(tǒng)一管理和優(yōu)化。通過(guò)sql基本上可以實(shí)現(xiàn)我們不使用數(shù)據(jù)訪問(wèn)框架可以實(shí)現(xiàn)的所有功能,或許更多。

      3、解除sql與程序代碼的耦合

      通過(guò)提供DAL層,將業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯分離,使系統(tǒng)的設(shè)計(jì)更清晰,更易維護(hù),更易單元測(cè)試。sql和代碼的分離,提高了可維護(hù)性。

      4、提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的orm字段關(guān)系映射

      5、提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組建維護(hù)

      6、提供xml標(biāo)簽,支持編寫(xiě)動(dòng)態(tài)sql。

      缺點(diǎn):

      1、編寫(xiě)SQL語(yǔ)句時(shí)工作量很大,尤其是字段多、關(guān)聯(lián)表多時(shí),更是如此。

      2、SQL語(yǔ)句依賴(lài)于數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)庫(kù)移植性差,不能更換數(shù)據(jù)庫(kù)。

      3、框架還是比較簡(jiǎn)陋,功能尚有缺失,雖然簡(jiǎn)化了數(shù)據(jù)綁定代碼,但是整個(gè)底層數(shù)據(jù)庫(kù)查詢(xún)實(shí)際還是要自己寫(xiě)的,工作量也比較大,而且不太容易適應(yīng)快速數(shù)據(jù)庫(kù)修改。

      4、二級(jí)緩存機(jī)制不佳

      MyBatis SQL

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:設(shè)置段落格式
      下一篇:升級(jí)自己的ERP并節(jié)省資金(或使您的企業(yè)崩潰)
      相關(guān)文章
      久久亚洲sm情趣捆绑调教| 亚洲欧洲日产国码久在线观看 | 亚洲Av永久无码精品三区在线| 亚洲国产成人久久综合一区77| 亚洲国产区男人本色| 亚洲va成无码人在线观看| 亚洲视频一区在线观看| 亚洲第一页在线播放| 久久亚洲精品无码VA大香大香| 亚洲图片一区二区| 亚洲人成电影亚洲人成9999网| 亚洲免费在线视频| 亚洲黄色免费网址| 亚洲国产精品综合久久网各 | 国产偷国产偷亚洲高清日韩 | 亚洲欧洲精品国产区| 亚洲国产电影在线观看| 激情内射亚洲一区二区三区爱妻| 亚洲午夜一区二区电影院| 亚洲av片不卡无码久久| 国产午夜亚洲精品| 亚洲视频在线免费| 国产av无码专区亚洲av果冻传媒| 国产亚洲精品成人AA片新蒲金| 亚洲婷婷五月综合狠狠爱| 国产成人无码综合亚洲日韩 | 亚洲日韩国产精品乱-久| 亚洲国产系列一区二区三区| 亚洲精品无码久久久久A片苍井空| 亚洲精品无码久久久久牙蜜区| 老子影院午夜伦不卡亚洲| 亚洲av成人一区二区三区在线观看 | 在线综合亚洲欧洲综合网站| 亚洲欧美国产国产综合一区| 亚洲av无码专区首页| 亚洲国产精品一区二区九九 | 国产亚洲AV手机在线观看| 亚洲av无码成人黄网站在线观看| 久久精品国产亚洲av水果派| 亚洲免费视频观看| 亚洲AV无码AV吞精久久|