MyBatis使用筆記

覆蓋常見的使用場(chǎng)景显歧,基本的增刪改查忽你,分頁幼东。這里只是常見的使用,冷門使用的可以查看官方文檔科雳。

技術(shù)點(diǎn):

* 基本增刪改查
* 動(dòng)態(tài)拼接條件查詢根蟹,傳遞參數(shù)
* 分頁
* 調(diào)用存儲(chǔ)過程
* 提交事務(wù)
* 批量刪除,添加
* sql日志打印
* 接口式編程
* 攔截器分頁
* 枚舉類型

整體流程:

* 主配置文件
* 關(guān)系映射文件
* 代碼調(diào)用

基礎(chǔ)

1糟秘、傳遞參數(shù)

傳遞業(yè)務(wù)參數(shù)給sql語句简逮,可用于動(dòng)態(tài)拼接sql語句。在xml中的select標(biāo)簽中尿赚,參數(shù)節(jié)點(diǎn)只有一個(gè)散庶。單個(gè)參數(shù)好說,比如按照id查詢凌净;但如果想傳遞多個(gè)參數(shù)就要使用類型封裝悲龟,或者使用集合。

下面按照1個(gè)參數(shù)和多個(gè)參數(shù)加以討論冰寻。

1.1 一個(gè)參數(shù)须教,也就是一個(gè)基本類型或者String

如果只傳遞一個(gè)參數(shù),則在parameterType 節(jié)點(diǎn)中聲明數(shù)據(jù)類型(為Java類型)斩芭,然后在sql語句的占位符中可以寫成

id= #{_parameter}

或者隨便寫點(diǎn)啥轻腺,一般寫成列名稱 例如:

 id= #{id}

示例代碼片段:

 <!--帶有查詢一個(gè)查詢參數(shù)的查詢乐疆,按照id查詢-->
    <select id="selectOnePerson" parameterType="int" resultMap="PersonResult">
        SELECT ID,NAME,SEX,ADDRESS  FROM message WHERE  ID = #{id}
    </select>

1.2 多個(gè)參數(shù)

如果需要傳遞多個(gè)參數(shù)的話,我們使用一個(gè)類封裝或者使用集合约计。

1.2.1 使用封裝類诀拭,如果使用封裝類,則在parameterType節(jié)點(diǎn)聲明封裝類型的完整限定名(包名.類名)煤蚌,例如

    com.xiaozhao.bean.Person

然后在sql語句的占位符中直接使用封裝類中的屬性名耕挨,假設(shè)上訴Person類中有一個(gè)name屬性,例如

    NAME = #{name}

示例代碼片段:

   <!--帶有多個(gè)參數(shù)的查詢尉桩,且根據(jù)參數(shù)是否有效動(dòng)態(tài)拼接sql-->
     <select id="queryPersonList" parameterType="com.xiaozhao.bean.Person" resultMap="PersonResult">
         SELECT ID,NAME,SEX,ADDRESS FROM message WHERE 1=1
         <if test="name!=null and !&quot;&quot;.equals(name.trim())">
             and NAME = #{name}
         </if>
     </select>

1.2.2 使用集合(數(shù)組筒占,List,Map)

如果使用集合則稍有不同蜘犁,但是整體流程差不多翰苫。

打印日志

直接在resources文件夾下新建一個(gè)log4j.properties文件

內(nèi)容設(shè)置如下:

#日志輸出級(jí)別,從低到高依次為:DEBUG < INFO < WARN < ERROR
#在log4j.rootLogger配置的級(jí)別这橙,只有大于等于此配置的才會(huì)顯示

#輸出到控制臺(tái)奏窑,其中"Console"名稱可以為其他,但是下面三行必須相同屈扎。例如 寫成 A埃唯,那么下面三行為:
#log4j.appender.A=org.apache.log4j.ConsoleAppender
#log4j.appender.A.layout=org.apache.log4j.PatternLayout
#log4j.appender.A.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#格式化說明------ %d:時(shí)間;%t:線程名稱鹰晨;%c:類名墨叛;%p:級(jí)別;%m:附加信息模蜡;%n:換行
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#個(gè)性化配置漠趁,這個(gè)包下面的輸出不會(huì)顯示
log4j.logger.org.apache=INFO

常見標(biāo)簽

1、where,set,trim標(biāo)簽

可以用于sql條件的動(dòng)態(tài)拼接忍疾,不需要再寫 where 1=1 

where 和 set是trim的2個(gè)快捷方法闯传,可以根據(jù)規(guī)則動(dòng)態(tài)拼接。

where 和set 本質(zhì)也是trim.

2.sql標(biāo)簽

類似于常量定義膝昆,宏替換

高級(jí)使用

常見問題

1丸边、#{} 和 ${} 的區(qū)別?

首先 #{}是預(yù)編譯荚孵,加快執(zhí)行速度還防止sql注入妹窖。而${}會(huì)直接拼接成字符串,一般用于order by 字段

2收叶、resultMap 和 resultType的區(qū)別骄呼?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜓萄,更是在濱河造成了極大的恐慌隅茎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫉沽,死亡現(xiàn)場(chǎng)離奇詭異辟犀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绸硕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門堂竟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玻佩,你說我怎么就攤上這事出嘹。” “怎么了咬崔?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵税稼,是天一觀的道長。 經(jīng)常有香客問我垮斯,道長郎仆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任兜蠕,我火速辦了婚禮丸升,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牺氨。我一直安慰自己,他們只是感情好墩剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布猴凹。 她就那樣靜靜地躺著,像睡著了一般岭皂。 火紅的嫁衣襯著肌膚如雪郊霎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天爷绘,我揣著相機(jī)與錄音书劝,去河邊找鬼。 笑死土至,一個(gè)胖子當(dāng)著我的面吹牛购对,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陶因,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼骡苞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起解幽,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤贴见,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后躲株,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體片部,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年霜定,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了档悠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡然爆,死狀恐怖站粟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情曾雕,我是刑警寧澤奴烙,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站剖张,受9級(jí)特大地震影響切诀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搔弄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一幅虑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顾犹,春花似錦倒庵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浑玛,卻和暖如春绍申,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顾彰。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工极阅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涨享。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓筋搏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厕隧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拆又,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • 1. 簡介 1.1 什么是 MyBatis 儒旬? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,522評(píng)論 0 4
  • 事有始時(shí)帖族,必有始終栈源,關(guān)于城墻,打造自我 沒見成效竖般,未有績果甚垦,沒權(quán)享受,無利擁有 寫下此文涣雕,意在提醒艰亮,改變局面,全在...
    舒童GoDoneNow閱讀 152評(píng)論 0 0
  • 當(dāng)一個(gè)人漫不經(jīng)心時(shí)挣郭,他想到的是內(nèi)心深處最關(guān)心迄埃,惦念的。那么當(dāng)思考成為一種習(xí)慣兑障,每當(dāng)生活作息中侄非,有固定的時(shí)間...
    書_贏閱讀 323評(píng)論 0 0
  • 第一次聽到“運(yùn)營”這個(gè)詞逞怨,是在一年前跟大學(xué)同學(xué)聊天時(shí),問他當(dāng)時(shí)在做什么工作福澡,他說在新浪樂居做運(yùn)營叠赦。“運(yùn)營”革砸?一個(gè)我...
    疏影脈脈閱讀 266評(píng)論 0 0
  • 反駁的終極武器就是反問對(duì)方:這又有什么用呢除秀?
    鹿繽紛閱讀 86評(píng)論 0 0