版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本章目標(biāo)Mybatis的結(jié)構(gòu)與原理Mybatis配置文件詳解SQL
文件詳解Mybatis范圍與生命周期2MyBatis配置文件3配置文件的元素properties該元素是外部化的、可替代的屬性,這些屬性也可以配置在典型的Java屬性配置文件中,或者通過properties元素的子元素來傳遞。例如:<properties
resource="
/mybatis/example/perties"><property
name="username"
value="dev_user"/><property
name="password"
value="F2Fa3!33TYyg"/></properties>其中的屬性值就可以在整個(gè)配置文件中使用,使用可替換的屬性來實(shí)現(xiàn)動(dòng)態(tài)配置。例如:<dataSource
type="POOLED"><property
name="driver"
value="${driver}"/><property
name="url"
value="${url}"/><property
name="username"
value="${username}"/><property
name="password"
value="${password}"/></dataSource>4Settings該元素是極其重要的參數(shù)設(shè)置,它們會(huì)修改MyBatis在運(yùn)行時(shí)的行為方式。<settings><setting
name="cacheEnabled"
value="true"/><setting
name="lazyLoadingEnabled"
value="true"/><setting
name="multipleResultSe abled"
value="true"/><setting
name="useColumnLabel"
value="true"/><setting
name="useGeneratedKeys"
value="false"/><setting
name="enhancementEnabled"
value="false"/><setting
name="defaultExecutorType"
value="SIMPLE"/><setting
name="defaultStatementTimeout"
value="25000"/></settings>5typeAliases類型別名即為Java類型命名一個(gè)短的名稱。它僅同XML配置有關(guān),只用于減少類完全限定名的多余部分。.blog.Author"/>.blog.Blog"/>.blog.Post"/>.blog.Section"/>.blog.Tag"/><typeAliases><typeAlias
alias="Author"
type="<typeAlias
alias="Blog"
type="<typeAlias
alias="Commenttype="
ment"/><typeAlias
alias="Post"
type="<typeAlias
alias="Section"
type="<typeAlias
alias="Tag"
type="</typeAliases>6typeHandlers無論是MyBatis在預(yù)處理語句中設(shè)置一個(gè)參數(shù),還是從結(jié)果//
ExampleTypeHandler.javapublic
classExampleTypeHandlerimplements
TypeHandler{public
voidsetParameter(PreparedStatement
ps,
int
i,
Objectparameter,JdbcType
jdbcType)
throws
SQLException
{ps.setString(i,
(String)
parameter);}public
Object
getResult(ResultSet
rs,
String
columnName)throws
SQLException
{return
rs.getString(columnName);}public
Object
getResult(CallableStatement
cs,
int
columnIndex)throws
SQLException
{return
cs.getString(columnIndex);}}7environments應(yīng)用于多種數(shù)據(jù)MyBatis可以配置多種環(huán)境。這便于將SQL庫之中;<environments
default="development"><environment
id="development"><transactionManager
type="JDBC"><property
name="..."value="..."/></transactionManager><dataSource
type="POOLED"><property
name="driver"
value="${driver}"/><property
name="url"
value="${url}"/><property
name="username"value="${username}"/><property
name="password"
value="${password}"/></dataSource></environment></environments>8transactionManager
在MyBatis中,有兩種事務(wù)管理器類型(即type=”[JDBC|MANAGED]”)(1)JDBC:該配置直接簡單地使用了JDBC的提交和回滾設(shè)置。它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。(2)MANAGED:該配置幾乎無用。它從來不提交或回滾接,且它會(huì)讓容器來管理事務(wù)的整個(gè)生命周期(如Spring或JEE應(yīng)用服務(wù)器的上下文)。默認(rèn)情況下,它會(huì)關(guān)閉連接。然而一些容器并不希望這樣,因此,如果需要從連接中停止它,則需要將closeConnection屬性設(shè)置為false。9dataSourcedataSource元素使用基本的JDBC數(shù)據(jù)源接口來配置JDBC連接對象的資源;內(nèi)建數(shù)據(jù)源類型(即type=”???”)有以下三種:(1)UNPOOLED(2)POOLED(3)JNDI10mappers既然MyBatis的行為已經(jīng)由上述元素配置完畢,那么語句。這些語句簡單闡述了MyBatis要文件,其余的細(xì)節(jié)便在每個(gè)SQL 文件現(xiàn)在要定義SQL從哪里尋找中;/mybatis/builder/AuthorMapper.xml"/><mappers><mapperresource="<mapperresource="/mybatis/builder/BlogMapper.xml"/><mapper
resource="
/mybatis/builder/PostMapper.xml"/></mappers>11SQL
的XML文件
SQL 文件包括以下幾個(gè)很少的頂級元素(按照它們應(yīng)該被定義的順序排序):cache:配置給定命名空間的緩存。cache-ref:從其
名空間
緩存配置。resultMap:最復(fù)雜,也是最有力量的元素,用于描述如何從數(shù)據(jù)庫結(jié)果集中加載對象。sql:可重用的SQL塊,也可以被其他語句
。insert:update:delete:select:語句。更新語句。刪除語句。查詢語句。12select
查詢語句是使用MyBatis時(shí)最常用的元一。當(dāng)從數(shù)據(jù)庫中取出數(shù)據(jù)時(shí),會(huì)發(fā)現(xiàn)將數(shù)據(jù)在數(shù)據(jù)庫中是很有價(jià)值的,所以許多應(yīng)用程序的查詢操作相較更改數(shù)據(jù)操作更多。<select
id=”select ”
parameterType=”int”resultType=”hashmap”>SELECT
*
FROM WHERE
ID
=#{id}</select>該語句被稱為select ,使用一個(gè)int(或Integer)類型的參數(shù),并返回一個(gè)HashMap類型的對象,其中的鍵是列名,值是列對應(yīng)的值13Select中的屬性屬性描述id在命名空間中唯一的標(biāo)識符,可以被用于 該語句。parameterType將會(huì)傳入該語句的參數(shù)類的完全限定名或別名。resultType從該語句中返回的期望類型的類的完全限定名或別名。resultMap命名
外部的resultMap。flushCache將其設(shè)置為true,無論語句什么時(shí)候被調(diào)用,都會(huì)導(dǎo)致緩存被清空。默認(rèn)值為false。useCache將其設(shè)置為true,將會(huì)導(dǎo)致本條語句的結(jié)果被緩存。默認(rèn)值為true。timeout該設(shè)置驅(qū)動(dòng)程序等待數(shù)據(jù)庫返回請求結(jié)果。fetchSize暗示驅(qū)動(dòng)程序每次批量返回的結(jié)果行數(shù)。默認(rèn)不設(shè)置(驅(qū)動(dòng)自行處理)statementTypeSTATEMENT、PREPARED或CALLABLE的一種。resultSetTypeFORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE
中的一種。默認(rèn)不設(shè)置(驅(qū)動(dòng)自行處理)。14insert、update和delete
數(shù)據(jù)修改語句insert、update和delete在它們的實(shí)現(xiàn)中非常相似;<inserti<deleteid="insertAuthor"parameterType="
.blog.Author"flushCache="true"statementType="PREPARED"timeout="20000">where
id
=
#{id}</update><delete
id="deleteAuthor”
parameterType="int">deletefrom
Author
where
id
=
#{id}</delete>15insert、update和delete的屬性屬性描述id在命名空間中唯一的標(biāo)識符,可以被用于 該語句。parameterType將會(huì)傳入該語句的參數(shù)類的完全限定名或別名。flushCache將其設(shè)置為true,無論語句什么時(shí)候被調(diào)用,都會(huì)導(dǎo)致緩存被清空。默認(rèn)值為false。timeout該設(shè)置驅(qū)動(dòng)程序等待數(shù)據(jù)庫返回請求結(jié)果,并拋出異常時(shí)間的最大等待值。默認(rèn)不設(shè)置(驅(qū)動(dòng)自行處理)。statementTypeSTATEMENT、PREPARED或CALLABLE的一種。用于方便MyBatis選擇使用Statement、PreparedStatement或CallableStatement。默認(rèn)值為PREPARED。useGeneratedKeys(僅對insert有用)通知MyBatis使用JDBC的getGeneratedKeys方法來取出由數(shù)據(jù)(如MySQL和SQLServer的數(shù)據(jù)庫管理系統(tǒng)的自動(dòng)遞增字段)生成的主鍵。默認(rèn)值為false。keyProperty(僅對insert有用)標(biāo)記一個(gè)屬性,MyBatis會(huì)通過getGeneratedKeys或insert語句的selectKey子元素設(shè)置其值。默認(rèn)不設(shè)置。16sql該元素可以被用于定義可重用的SQL代碼段,可以包含在其他語句中。如:<sql
id=”userColumns”>
id,username,password
</sql>上述SQL片段可以被包含在其他語句中。如:<select
id=”selectUsers”
parameterType=”int”resultType=”hashmap”>select
<include
refid=”userColumns”/>from
some_tablewhere
id
=
#{id}</select>17resultMapresultMap元素是MyBatis中最重要、最強(qiáng)大的元素。解決列名與屬性名稱不匹配的問題:<resultMap
id="userResultMap"
type="User"><id
property="id"
column="user_id"
/><result
property="username"
column="user_name"/><result
property="password"
column="hashed_password"/></resultMap>其 語句使用resultMap屬性即可(注意, 去掉了resultType屬性)。例如:<select
id=”selectU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沈陽理工大學(xué)《計(jì)算機(jī)網(wǎng)絡(luò)》2021-2022學(xué)年期末試卷
- 沈陽理工大學(xué)《工藝美術(shù)設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《單片機(jī)接口技術(shù)》2023-2024學(xué)年期末試卷
- 合同編通則與新公司法銀行業(yè)務(wù)
- 2024標(biāo)準(zhǔn)幼師聘用合同范本
- 期末復(fù)習(xí)檢測提升卷九 -2022-2023學(xué)年語文五年級上冊(部編版)
- 2024小產(chǎn)權(quán)房屋買賣合同協(xié)議書樣本
- 2024貨物采購合同范本
- 2024快遞承包合同,快遞承包協(xié)議
- 2024中學(xué)門衛(wèi)勞動(dòng)合同范本
- GB/T 10801.2-2018絕熱用擠塑聚苯乙烯泡沫塑料(XPS)
- 12J5-1 平屋面建筑標(biāo)準(zhǔn)設(shè)計(jì)圖
- 中印邊境爭端
- 《墨梅》課件(省一等獎(jiǎng))
- 招聘與錄用期末考試卷及答案AB卷2套
- 三美術(shù)上冊第16課新穎的電腦課件1新人教版
- 實(shí)驗(yàn)室基本技能培訓(xùn)課件
- 如何申報(bào)科研項(xiàng)目 課件
- 李子栽培管理技術(shù)-課件
- 物理聽課記錄物理聽課記錄及評析范文(3篇)
- 超星學(xué)習(xí)通爾雅《人工智能》答案
評論
0/150
提交評論