




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本章目標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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業設計在制造業的重要作用
- 工業自動化與產品質量提升的關系
- 工作壓力與時間管理心理技巧
- 工作場所心理健康的規劃設計
- 工作中的創新思維實踐案例分享
- 工作與生活平衡的探索與實踐
- 工程塑料在注塑中的應用及發展
- 工廠生產效率提升方法論
- 工廠能效評估與節能改進措施
- 工程造價管理與成本控制分析
- 妊娠期急性脂肪肝臨床管理指南(2022版)解讀
- 呼倫貝爾農業無人機項目可行性研究報告(范文)
- LTPS-LCD工藝流程簡介資料
- 初中生物總復習(七八年級上下冊)
- (完整版)10KV配電室安裝工程施工方案
- 幼兒衛生保健試題和參考答案解析
- 鍋爐基礎知識及水泥余熱發電鍋爐性能1
- 遼寧省建筑施工三類人員安全生產考核合格證變更申請表
- (完整版)家庭親密度與適應性量表
- DOE操作作業指導書
- 初三自主招生簡歷范文
評論
0/150
提交評論