




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)習(xí)目標(biāo)了解MyBatis的開(kāi)發(fā)環(huán)境熟悉MyBatis框架的結(jié)構(gòu)體系掌握MyBatis框架全局配置文件及映射文件的編寫(xiě)具有使用MyBatis框架完成角色管理模塊的能力情景導(dǎo)入MyBatis基礎(chǔ)介紹MyBatis簡(jiǎn)介MyBatis的前身是iBatis,2010年由apache
softwarefoundation遷移到了Google
code,并將名稱修改為MyBatis。MyBatis是ORM模式眾多框架中的一種,是一個(gè)優(yōu)秀的持久層框架,用來(lái)處理面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫(kù)存在不匹配現(xiàn)象的技術(shù),且因?yàn)镸yBatis靈巧和易學(xué)習(xí)等優(yōu)勢(shì),越來(lái)越多的企業(yè)級(jí)應(yīng)用項(xiàng)目使用MyBatis框架進(jìn)行開(kāi)發(fā)。MyBatis基礎(chǔ)介紹MyBatis功能架構(gòu)MyBatis的功能架構(gòu)分為接口層、數(shù)據(jù)處理層和基礎(chǔ)支撐層,每一層都有其負(fù)責(zé)的功能。MyBatis基礎(chǔ)介紹MyBatis功能架構(gòu)接口層:是Mybatis提供的用于操縱數(shù)據(jù)庫(kù)的接口API,例如DAO接口,當(dāng)API接口層接收到調(diào)用請(qǐng)求之后會(huì)根據(jù)請(qǐng)求調(diào)用數(shù)據(jù)處理層來(lái)進(jìn)行具體的數(shù)據(jù)處理。數(shù)據(jù)處理層:負(fù)責(zé)具體的數(shù)據(jù)處理,包括SQL的解析、執(zhí)行和執(zhí)行結(jié)果映射處理等。它主要用于根據(jù)調(diào)用的請(qǐng)求完成一次具體的數(shù)據(jù)庫(kù)操作。基礎(chǔ)支撐層:作為數(shù)據(jù)處理層的基礎(chǔ)功能支撐,提供了包括連接管理、事務(wù)管理、配置加載和緩存處理等共用的基礎(chǔ)功能,可以將這些功能提取為最基礎(chǔ)的組件以供數(shù)據(jù)處理層使用。MyBatis基礎(chǔ)介紹MyBatis結(jié)構(gòu)體系MyBatis通過(guò)使用簡(jiǎn)單的XML或注解方式將執(zhí)行的各種Statement(Statement、PreparedStatement、CallableStatement)配置起來(lái),并通過(guò)Java對(duì)象和Statement中的SQL進(jìn)行映射生成最終執(zhí)行的SQL語(yǔ)句,最后由MyBatis框架執(zhí)行SQL,將結(jié)果映射成Java對(duì)象并返回。MyBatis詳解
MyBatis全局配置文件學(xué)習(xí)MyBatis框架必須要掌握它的全局配置文件,全局配置文件的名稱不固定,一般情況將它命名為mybatis-config.xml。mybatis-config.xml全局配置文件中所有配置均基于<configuration></configuration>MyBatis詳解
properties—屬性properties可以把一些通用的屬性值配置在屬性文件中并加載到MyBatis運(yùn)行環(huán)境內(nèi)。例如,可以將數(shù)據(jù)連接單獨(dú)配置在perties屬性文件中,在全局配置文件中加載屬性文件,這樣就避免在全局配置文件中對(duì)數(shù)據(jù)庫(kù)連接參數(shù)進(jìn)行硬編碼。MyBatis詳解typeAliases—?jiǎng)e名在Mapper映射文件中,可以定義很多的Statement,如果每一個(gè)Statement都在指定類型時(shí)輸入類型全路徑,則不方便進(jìn)行開(kāi)發(fā),所以針對(duì)parameterType指定輸入?yún)?shù)的類型或resultType指定輸出結(jié)果的映射類型可定義一些別名,通過(guò)別名定義,可以更方便開(kāi)發(fā)。MyBatis詳解environments—環(huán)境MyBatis可以配置多個(gè)環(huán)境。這可以幫助SQL映射對(duì)應(yīng)多種數(shù)據(jù)庫(kù),在environments屬性中可配置MyBatis的事務(wù)管理及數(shù)據(jù)源。MyBatis詳解mappers—映射器在該元素內(nèi)加載映射文件,也就是配置的映射文件,在這里需要顯示聲明加載。使用相對(duì)于類路徑的資源引用XML文件<mappers> <!--通過(guò)resource引用UserMapper.xml映射文件--> <mapperresource="com/mybatis/mapping/UserMapper.xml"/></mappers>使用Mapper接口的全限定名<mappers><mapperclass="com.mybatis.config.UserMapper"/></mappers>MyBatis詳解settings—全局參數(shù)配置settings中配置MyBatis框架運(yùn)行設(shè)置的一些運(yùn)行參數(shù),例如二級(jí)緩存、延遲加載等參數(shù)或者更改性能參數(shù),例如最大線程數(shù)和最大請(qǐng)求數(shù)等。設(shè)置描述驗(yàn)證值組默認(rèn)值cacheEnabled對(duì)在此配置文件下的所有cache進(jìn)行全局開(kāi)/關(guān)設(shè)置true|falseTRUElazyLoadingEnabled在全局范圍內(nèi)啟用或禁用延遲加載。true|falseTRUEaggressiveLazyLoading當(dāng)設(shè)置為“true”的時(shí)候,懶加載的對(duì)象可能被任何懶屬性全部加載。否則,每個(gè)屬性都按需加載true|falseTRUEsafeRowBoundsEnabled允許使用嵌套的語(yǔ)句RowBoundstrue|falseFALSEmapUnderscoreToCamelCase從經(jīng)典的數(shù)據(jù)庫(kù)列名A_COLUMN啟用自動(dòng)映射到駱駝標(biāo)識(shí)的經(jīng)典的Java屬性名aColumntrue|falseFALSElazyLoadTriggerMethods指定觸發(fā)延遲加載的對(duì)象的方法Amethodnamelistseparatedbycommasequals,clone,hashCode,toStringMyBatis詳解
MyBatisSQL映射文件MyBatis的SQL映射文件中配置了操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句。MyBatis強(qiáng)大的理由是因?yàn)槠溆成淦鞯腦ML文件比JDBC簡(jiǎn)單。映射文件以Statement為單位進(jìn)行配置,在Satatement中配置SQL語(yǔ)句、parameterType輸入?yún)?shù)類型(完成輸入映射)、resultType輸出結(jié)果類型(完成輸出映射)。MyBatis詳解select元素
select元素是MyBatis框架中最常用的元素之一,在應(yīng)用程序中查詢的復(fù)雜程度也遠(yuǎn)比插入等語(yǔ)句要高,且每次的插入、刪除和更新的操作也伴隨著查詢,這也是MyBatis的基本原則。<!--查詢所有用戶信息--> <selectid="findUserList"resultType="User"><!--resultType屬性指明查詢返回的結(jié)果集類型,User為實(shí)體類的別名--> SELECT `user`.id, `user`.username, `user`.realname, role.`name`, `user`.remarks FROM `user` INNERJOINroleON`user`.role=role.id</select>MyBatis詳解
parameterType輸入類型輸入類型有兩種:#{},表示一個(gè)占位符,實(shí)現(xiàn)了向PrepareStatement中的預(yù)處理語(yǔ)句中設(shè)置參數(shù),MyBatis自動(dòng)進(jìn)行Java類型和JDBC類型的轉(zhuǎn)換;${},表示SQL的拼接,通過(guò)${}接收參數(shù),將參數(shù)的內(nèi)容不加任何修飾拼接在SQL中。使用占位符#{}可以有效防止SQL注入。開(kāi)發(fā)人員無(wú)需考慮參數(shù)的類型,比如,傳入字符串,MyBatis最終拼接好的SQL就是參數(shù)加單引號(hào)。${}和#{}不同,通過(guò)${}可以將parameterType傳入的內(nèi)容拼接在SQL中且不進(jìn)行JDBC類型轉(zhuǎn)換,${}可以接收簡(jiǎn)單類型值或POJO屬性值。但使用${}不能防止SQL注入。MyBatis詳解
resultType輸出類型輸出類型分為輸出簡(jiǎn)單類型,即Java中定義的int、char、double和boolean等簡(jiǎn)單類型,也可輸出POJO類型和POJO列表類型。輸出簡(jiǎn)單類型輸出簡(jiǎn)單類型的前提是查詢出來(lái)的結(jié)果有一條記錄,使用Session的selectOne()方法查詢單條記錄,Mapper接口使用簡(jiǎn)單類型作為方法返回值。輸出POJO輸出POJO時(shí),Mapper接口使用POJO對(duì)象類型作為方法返回值輸出POJO列表輸出POJO列表代表查詢到的結(jié)果集存在多條記錄,可以使用Session的selectList()方法查詢多條記錄,Mapper接口使用List<POJO>對(duì)象作為方法返回值。如果使用selectOne()方法用于查詢多條記錄,應(yīng)用程序會(huì)拋出異常。MyBatis詳解
insert、update和delete元素insert、update和delete元素的實(shí)現(xiàn)的使用方法很相似。屬性描述默認(rèn)值id在命名空間中唯一的標(biāo)識(shí)符,可以被用來(lái)引用這條語(yǔ)句
parameterType將會(huì)傳入這條語(yǔ)句的參數(shù)類的完全限定名或別名
parameterMap這是引用外部parameterMap的已經(jīng)被廢棄的方法。使用內(nèi)聯(lián)參數(shù)映射和parameterType屬性
flushCache將其設(shè)置為true,不論語(yǔ)句什么時(shí)候被調(diào)用,都會(huì)導(dǎo)致緩存被清空默認(rèn)值:falsetimeout這個(gè)設(shè)置驅(qū)動(dòng)程序等待數(shù)據(jù)庫(kù)返回請(qǐng)求結(jié)果,并拋出異常時(shí)間的最大等待值。默認(rèn)不設(shè)置(驅(qū)動(dòng)自行處理)
statementTypeSTATEMENT,PREPARED或CALLABLE的一種。讓MyBatis選擇使用Statement、PreparedStatement或CallableStatement默認(rèn)值:PREPAREDuseGeneratedKeys(僅對(duì)insert有用)告訴MyBatis使用JDBC的getGeneratedKeys方法來(lái)取出由數(shù)據(jù)(比如:像MySQL和SQLServer這樣的數(shù)據(jù)庫(kù)管理系統(tǒng)的自動(dòng)遞增字段)內(nèi)部生成的主鍵默認(rèn)值:falsekeyProperty(僅對(duì)insert有用)標(biāo)記一個(gè)屬性,MyBatis會(huì)通過(guò)getGeneratedKeys或通過(guò)insert語(yǔ)句的selectKey子元素設(shè)置它的值默認(rèn):不設(shè)置MyBatis詳解SQL元素SQL元素被用來(lái)定義可重用的SQL代碼段,可包含在其他語(yǔ)句中。<sqlid="selectuser">id,username,password,remarks,role,realname</sql>除了頂級(jí)元素之外,在示例代碼中也學(xué)習(xí)了Parameters(參數(shù))的傳遞方式。Parameters元素在MyBatis框架的中使用率極高,是非常強(qiáng)大的元素。MyBatis詳解
簡(jiǎn)單參數(shù)對(duì)于傳遞簡(jiǎn)單參數(shù)可以被設(shè)置成任何內(nèi)容,如原生的類型和簡(jiǎn)單數(shù)據(jù)類型(整型、字符串),若沒(méi)有相關(guān)屬性的配置,它會(huì)完全用參數(shù)值來(lái)替代。<selectid="selectUsers"parameterType="int"resultType="hashmap">select<includerefid="userColumns"/>fromuserwhereid=#{id}</select>MyBatis詳解
復(fù)雜參數(shù)<insertid="insertUser"parameterType="User"> INSERTINTOuser(username,password,remarks,role,realname)VALUES(#{username},#{password},#{remarks},#{role},#{realname})</insert>環(huán)境準(zhǔn)備
MyBatis下載
如果要在Java項(xiàng)目中使用MyBatis框架,只需要將其引入,就能以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫(kù),因此首先需要下載MyBatis。環(huán)境準(zhǔn)備
開(kāi)發(fā)環(huán)境環(huán)境版本號(hào)JDK1.8tomcat8.0MySQL5.7Mybatis3.4.1Eclipse4.7環(huán)境準(zhǔn)備
數(shù)據(jù)庫(kù)在開(kāi)發(fā)項(xiàng)目前首先要確定數(shù)據(jù)庫(kù)表,然后根據(jù)數(shù)據(jù)庫(kù)表創(chuàng)建對(duì)應(yīng)的實(shí)體類,最終實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。在本章項(xiàng)目中,通過(guò)控制臺(tái)輸出實(shí)現(xiàn)物料訂單管理系統(tǒng)中模塊管理的查詢所有信
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村分戶分家協(xié)議書(shū)范本8篇
- 有關(guān)建設(shè)工程勘察設(shè)計(jì)合同(3)4篇
- 多人股份制合作協(xié)議合同6篇
- 交通運(yùn)輸自動(dòng)化監(jiān)測(cè)與管理系統(tǒng)項(xiàng)目績(jī)效評(píng)估報(bào)告
- 中低壓電纜連接件項(xiàng)目績(jī)效評(píng)估報(bào)告
- T/ZHCA 028-2023化妝品原料水解膠原深冷金槍魚(yú)膠原低聚肽
- 2025西安交通大學(xué)城市學(xué)院輔導(dǎo)員考試試題及答案
- 2025煙臺(tái)文化旅游職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 2025石家莊醫(yī)學(xué)高等專科學(xué)校輔導(dǎo)員考試試題及答案
- 機(jī)器人學(xué)導(dǎo)論 課件全套 王偉 第1-5章-緒論 -操作臂的控制方法
- ZJUTTOP100理工類學(xué)術(shù)期刊目錄(2018年版)
- F0值計(jì)算公式自動(dòng)
- 道路交通事故現(xiàn)場(chǎng)勘查課件
- 門(mén)店電表記錄表
- 心理學(xué)在船舶安全管理中的應(yīng)用
- JJF(鄂) 90-2021 電子輥道秤校準(zhǔn)規(guī)范(高清版)
- 超星爾雅學(xué)習(xí)通《今天的日本》章節(jié)測(cè)試含答案
- 組態(tài)王雙機(jī)熱備
- 餐飲量化分級(jí)
- 三一重工SCC2000履帶吊履帶式起重機(jī)技術(shù)參數(shù)
- [精品]GA38-2004《銀行營(yíng)業(yè)場(chǎng)所風(fēng)險(xiǎn)等級(jí)和防護(hù)級(jí)別的規(guī)定》
評(píng)論
0/150
提交評(píng)論