javaweb課件-第十九章mybatis高級應(yīng)用_第1頁
javaweb課件-第十九章mybatis高級應(yīng)用_第2頁
javaweb課件-第十九章mybatis高級應(yīng)用_第3頁
javaweb課件-第十九章mybatis高級應(yīng)用_第4頁
javaweb課件-第十九章mybatis高級應(yīng)用_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論