javaweb課件-第十九章mybatis高級應用_第1頁
javaweb課件-第十九章mybatis高級應用_第2頁
javaweb課件-第十九章mybatis高級應用_第3頁
javaweb課件-第十九章mybatis高級應用_第4頁
javaweb課件-第十九章mybatis高級應用_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本章目標Mybatis的結構與原理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>其中的屬性值就可以在整個配置文件中使用,使用可替換的屬性來實現動態配置。例如:<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該元素是極其重要的參數設置,它們會修改MyBatis在運行時的行為方式。<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類型命名一個短的名稱。它僅同XML配置有關,只用于減少類完全限定名的多余部分。.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在預處理語句中設置一個參數,還是從結果//

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應用于多種數據MyBatis可以配置多種環境。這便于將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中,有兩種事務管理器類型(即type=”[JDBC|MANAGED]”)(1)JDBC:該配置直接簡單地使用了JDBC的提交和回滾設置。它依賴于從數據源得到的連接來管理事務范圍。(2)MANAGED:該配置幾乎無用。它從來不提交或回滾接,且它會讓容器來管理事務的整個生命周期(如Spring或JEE應用服務器的上下文)。默認情況下,它會關閉連接。然而一些容器并不希望這樣,因此,如果需要從連接中停止它,則需要將closeConnection屬性設置為false。9dataSourcedataSource元素使用基本的JDBC數據源接口來配置JDBC連接對象的資源;內建數據源類型(即type=”???”)有以下三種:(1)UNPOOLED(2)POOLED(3)JNDI10mappers既然MyBatis的行為已經由上述元素配置完畢,那么語句。這些語句簡單闡述了MyBatis要文件,其余的細節便在每個SQL 文件現在要定義SQL從哪里尋找中;/mybatis/builder/AuthorMapper.xml"/><mappers><mapperresource="<mapperresource="/mybatis/builder/BlogMapper.xml"/><mapper

resource="

/mybatis/builder/PostMapper.xml"/></mappers>11SQL

的XML文件

SQL 文件包括以下幾個很少的頂級元素(按照它們應該被定義的順序排序):cache:配置給定命名空間的緩存。cache-ref:從其

名空間

緩存配置。resultMap:最復雜,也是最有力量的元素,用于描述如何從數據庫結果集中加載對象。sql:可重用的SQL塊,也可以被其他語句

。insert:update:delete:select:語句。更新語句。刪除語句。查詢語句。12select

查詢語句是使用MyBatis時最常用的元一。當從數據庫中取出數據時,會發現將數據在數據庫中是很有價值的,所以許多應用程序的查詢操作相較更改數據操作更多。<select

id=”select ”

parameterType=”int”resultType=”hashmap”>SELECT

*

FROM WHERE

ID

=#{id}</select>該語句被稱為select ,使用一個int(或Integer)類型的參數,并返回一個HashMap類型的對象,其中的鍵是列名,值是列對應的值13Select中的屬性屬性描述id在命名空間中唯一的標識符,可以被用于 該語句。parameterType將會傳入該語句的參數類的完全限定名或別名。resultType從該語句中返回的期望類型的類的完全限定名或別名。resultMap命名

外部的resultMap。flushCache將其設置為true,無論語句什么時候被調用,都會導致緩存被清空。默認值為false。useCache將其設置為true,將會導致本條語句的結果被緩存。默認值為true。timeout該設置驅動程序等待數據庫返回請求結果。fetchSize暗示驅動程序每次批量返回的結果行數。默認不設置(驅動自行處理)statementTypeSTATEMENT、PREPARED或CALLABLE的一種。resultSetTypeFORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE

中的一種。默認不設置(驅動自行處理)。14insert、update和delete

數據修改語句insert、update和delete在它們的實現中非常相似;<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在命名空間中唯一的標識符,可以被用于 該語句。parameterType將會傳入該語句的參數類的完全限定名或別名。flushCache將其設置為true,無論語句什么時候被調用,都會導致緩存被清空。默認值為false。timeout該設置驅動程序等待數據庫返回請求結果,并拋出異常時間的最大等待值。默認不設置(驅動自行處理)。statementTypeSTATEMENT、PREPARED或CALLABLE的一種。用于方便MyBatis選擇使用Statement、PreparedStatement或CallableStatement。默認值為PREPARED。useGeneratedKeys(僅對insert有用)通知MyBatis使用JDBC的getGeneratedKeys方法來取出由數據(如MySQL和SQLServer的數據庫管理系統的自動遞增字段)生成的主鍵。默認值為false。keyProperty(僅對insert有用)標記一個屬性,MyBatis會通過getGeneratedKeys或insert語句的selectKey子元素設置其值。默認不設置。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中最重要、最強大的元素。解決列名與屬性名稱不匹配的問題:<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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論