Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解
properties
這些是外部化的,可替代的屬性,這些屬性也可以配置在典型的Java屬性配置文件中,或者通過properties元素的子元素來傳遞。例如:
<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties>
其中的屬性就可以在整個配置文件中使用,使用可替換的屬性來實現(xiàn)動態(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>
這個例子中的username和password將會由properties元素中設(shè)置的值來替換。driver和url屬性將會從包含進來的config.properties文件中的值來替換。
Settings
1.cacheEnabled
這個配置使全局的映射器啟用或禁用緩存。
有效值:true,false
默認值:true
2.lazyLoadingEnabled
全局啟用或禁用延遲加載。當禁用時,所有關(guān)聯(lián)對象都會即時加載。
有效值:true,false
默認值:true
3.aggressiveLazyLoading
當啟用時,有延遲加載屬性的對象在被調(diào)用時將會完全加載任意屬性。否則,
每種屬性將會按需要加載。
有效值:true,false
默認值:true
4.mult ipleResultSetsEnabled
允許或不允許多種結(jié)果集從一個單獨的語句中返回(需要適合的驅(qū)動)
有效值:true,false
默認值:true
5.useColumnLabel
使用列標簽代替列名。不同的驅(qū)動在這方便表現(xiàn)不同。參考驅(qū)動文檔或充分測
試兩種方法來決定所使用的驅(qū)動。
有效值:true,false
默認值:true
6.useGeneratedKeys
允許JDBC支持生成的鍵。需要適合的驅(qū)動。如果設(shè)置為true則這個設(shè)置強制
生成的鍵被使用,盡管一些驅(qū)動拒絕兼容但仍然有效(比如 Derby)
有效值:true,false
默認值:false
7.autoMappingBehavior
指定MyBatis如何自動映射列到字段/屬性。PARTIAL只會自動映射簡單,沒有嵌套的結(jié)果。
FULL會自動映射任意復(fù)雜的結(jié)果(嵌套的或其他情況)
有效值:NONE,PARTIAL,FULL
默認值:PARTIAL
8.defaultExecutorType
配置默認的執(zhí)行器。SIMPLE 執(zhí)行器沒有什么特別之處。REUSE執(zhí)行器重用預(yù)處理語句。
BATCH 執(zhí)行器重用語句和批量更新
有效值:SIMPLE,REUSE,BATCH
默認值:SIMPLE
9.defaultStatementTimeout
設(shè)置超時時間,它決定驅(qū)動等待一個數(shù)據(jù)庫響應(yīng)的時間。
有效值:Any,positive,integer
默認值:Not Set(null)
一個設(shè)置信息元素的示例,完全的配置如下所示:
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" 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>
typeAliases
類型別名是為Java類型命名一個短的名字。它只和XML配置有關(guān),只用來減少類完全限定名的多余部分。例如:
<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/> <typeAlias alias="Comment" type="domain.blog.Comment"/> <typeAlias alias="Post" type="domain.blog.Post"/> <typeAlias alias="Section" type="domain.blog.Section"/> <typeAlias alias="Tag" type="domain.blog.Tag"/> </typeAliases>
使用這個配置,“Blog”可以任意用來替代“domain.blog.Blog”所使用的地方。 對于普通的 Java 類型,有許多內(nèi)建的類型別名。它們都是大小寫不敏感的,由于重載的名字,要注意原生類型的特殊處理。
typeHandlers
無論是MyBatis在預(yù)處理語句中設(shè)置一個參數(shù),還是從結(jié)果集中取出一個值時,類型處理器被用來將獲取的值以合適的方式轉(zhuǎn)換成Java類型。下面這個表格描述了默認的類型處理器。
你可以重寫類型處理器或創(chuàng)建你自己的類型處理器來處理不支持的或非標準的類型。但這種情況相當少!!
objectFactory
MyBatis每次創(chuàng)建結(jié)果對象新的實例時,它使用一個ObjectFactory實例來完成。如果參數(shù)映射存在,默認的ObjectFactory不比使用默認構(gòu)造方法或帶參數(shù)的構(gòu)造方法實例化目標類做的工作多。如果你想重寫默認的ObjectFactory,你可以創(chuàng)建你自己的。實例略。
plugins
MyBatis允許你在某一點攔截已映射語句執(zhí)行的調(diào)用。默認情況下,MyBatis允許使用插件來攔截方法調(diào)用:
1.Executor
(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
2.ParameterHandler
(getParameterObject, setParameters)
3.ResultSetHandler
(handleResultSets, handleOutputParameters)
4.StatementHandler
(prepare, parameterize, batch, update, query)
environments
MyBatis可以配置多種環(huán)境。這會幫助你將SQL映射應(yīng)用于多種數(shù)據(jù)庫之中。
一個很重要的問題要記得:你可以配置多種環(huán)境,但你只能為每個SqlSessionFactory實例選擇一個。所以,如果你想連接兩個數(shù)據(jù)庫,你需要創(chuàng)建兩個SqlSessionFactory實例,每個數(shù)據(jù)庫對應(yīng)一個。而如果是三個數(shù)據(jù)庫,你就需要三個實例,以此類推。
環(huán)境元素定義了如何配置環(huán)境,如例:
<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>
注意這里:
1.默認的環(huán)境 ID(比如:default=”development”)。
2.每個 environment 元素定義的環(huán)境 ID(比如:id=”development”)。
3.事務(wù)管理器的配置(比如:type=”JDBC”)。
4.數(shù)據(jù)源的配置(比如:type=”POOLED”)。
transactionManager
在MyBatis中有兩種事務(wù)管理器類型(也就是type="[JDBC|MANAGED]"。
1.JDBC---這個配置直接簡單使用了JDBC的提交和回滾設(shè)置。它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。
2.MANAGED---這個配置幾乎沒做什么。它從來不提交或回滾一個連接。而它會讓容器來管理事務(wù)的整個生命周期(比如Spring或JEE應(yīng)用服務(wù)器的上下文)。默認情況下它會關(guān)閉連接。然而一些容器并不希望這樣,因此如果你需要從連接中停止它,將closeConnection屬性設(shè)置為false。例如:
<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>
這兩種事務(wù)管理器都不需要任何屬性。然而它們都是類型別名,要替換它們,你需要放置你自己的類的完全限定名或類型別名,它們引用了你對TransacFactory接口的實現(xiàn)類。
相關(guān)文章
spring?boot集成smart-doc自動生成接口文檔詳解
這篇文章主要介紹了spring?boot集成smart-doc自動生成接口文檔詳解,smart-doc是一款同時支持java?restful?api和Apache?Dubbo?rpc接口文檔生成的工具,smart-doc顛覆了傳統(tǒng)類似swagger這種大量采用注解侵入來生成文檔的實現(xiàn)方法2022-09-09JavaWeb實現(xiàn)顯示mysql數(shù)據(jù)庫數(shù)據(jù)
MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的。本文將利用JavaWeb實現(xiàn)顯示mysql數(shù)據(jù)庫數(shù)據(jù)功能,需要的可以參考一下2022-03-03Springboot使用Spring Data JPA實現(xiàn)數(shù)據(jù)庫操作
Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 規(guī)范的基礎(chǔ)上開發(fā)的一個框架,使用 Spring Data JPA 可以極大地簡化JPA 的寫法,本章我們將詳細介紹在Springboot中使用 Spring Data JPA 來實現(xiàn)對數(shù)據(jù)庫的操作2021-06-06Java技巧分享之利用RxJava打造可觀測數(shù)據(jù)RxLiveData
這篇文章主要來和大家分享一個Java技巧,那就是利用RxJava打造可觀測數(shù)據(jù)RxLiveData,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-06-06