MyBatis配置檔案總結
本文參考官網:https://mybatis.org/mybatis-3/zh/configuration.html
配置檔案結構如下
properties
這些屬性可以在外部進行配置,並可以進行動態替換。如配置資料來源的時候可以${xxx}
如果一個屬性在不只一個地方進行了配置,那麼,MyBatis 將按照下面的順序來載入:
- 首先讀取在 properties 元素體內指定的屬性。
- 然後根據 properties 元素中的 resource 屬性讀取類路徑下屬性檔案,或根據 url 屬性指定的路徑讀取屬性檔案,並覆蓋之前讀取過的同名屬性。
- 最後讀取作為方法引數傳遞的屬性,並覆蓋之前讀取過的同名屬性。
從 MyBatis 3.4.2 開始,你可以為佔位符指定一個預設值,如
${username:ut_user}<!-- 如果屬性 'username' 沒有被配置,'username' 屬性的值將為 'ut_user' -->
settings
會改變 MyBatis 的執行時行為,如:快取,懶載入,等等。完整如下
<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="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
typeAliases
為 Java 型別設定一個縮寫名字。意在降低冗餘的全限定類名書寫
typeHandlers
設定預處理語句(PreparedStatement)中的引數或從結果集中取出一個值時, 都會用型別處理器將獲取到的值以合適的方式轉換成 Java 型別。
你可以重寫已有的型別處理器或建立你自己的型別處理器來處理不支援的或非標準的型別。 具體做法為:實現 org.apache.ibatis.type.TypeHandler
介面, 或繼承一個很便利的類 org.apache.ibatis.type.BaseTypeHandler
, 並且可以(可選地)將它對映到一個 JDBC 型別。
objectFactory
每次 MyBatis 建立結果物件的新例項時,它都會使用一個物件工廠(ObjectFactory)例項來完成例項化工作。 預設的物件工廠需要做的僅僅是例項化目標類,要麼通過預設無參構造方法,要麼通過存在的引數對映來呼叫帶有引數的構造方法。 如果想覆蓋物件工廠的預設行為,可以通過建立自己的物件工廠來實現。
plugins
攔截4大物件
- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- ParameterHandler (getParameterObject, setParameters)
- ResultSetHandler (handleResultSets, handleOutputParameters)
- StatementHandler (prepare, parameterize, batch, update, query)
通過 MyBatis 提供的強大機制,使用外掛是非常簡單的,只需實現 Interceptor 介面,並指定想要攔截的方法簽名即可。
// ExamplePlugin.java
@Intercepts({@Signature(
type= Executor.class,
method = "update",
args = {MappedStatement.class,Object.class})})
public class ExamplePlugin implements Interceptor {
private Properties properties = new Properties();
public Object intercept(Invocation invocation) throws Throwable {
// implement pre processing if need
Object returnObject = invocation.proceed();
// implement post processing if need
return returnObject;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
}
environments
SqlSessionFactory
每個資料庫對應一個 SqlSessionFactory 例項,如果你想連線兩個資料庫,就需要建立兩個 SqlSessionFactory 例項。為了指定建立哪種環境,只要將它作為可選的引數傳遞給 SqlSessionFactoryBuilder 即可。可以接受環境配置的兩個方法簽名是
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);
事務管理器(transactionManager)
- JDBC – 這個配置直接使用了 JDBC 的提交和回滾設施,它依賴從資料來源獲得的連線來管理事務作用域。
- MANAGED – 這個配置幾乎沒做什麼。它從不提交或回滾一個連線,而是讓容器來管理事務的整個生命週期(比如 JEE 應用伺服器的上下文)。 預設情況下它會關閉連線。然而一些容器並不希望連線被關閉,因此需要將 closeConnection 屬性設定為 false 來阻止預設的關閉行為。
使用這Transaction 和TransactionFactory 介面,可以完全自定義 MyBatis 對事務的處理。
資料來源(dataSource)
- UNPOOLED
- POOLED
- JNDI
資料庫廠商標識(databaseIdProvider)
可以通過實現介面 org.apache.ibatis.mapping.DatabaseIdProvider
並在 mybatis-config.xml 中註冊來構建自己的 DatabaseIdProvider:
對映器(mappers)
定義 SQL 對映語句。使用相對於類路徑的資源引用,或完全限定資源定位符(包括 file:///
形式的 URL),或類名和包名等告訴 MyBatis 到哪裡去找對映檔案
相關文章
- 最全MyBatis核心配置檔案總結,可以作為工具先收藏了MyBatis
- Spring Boot 配置檔案總結Spring Boot
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- MyBatis載入配置檔案MyBatis
- SpringMvc+Spring+mybatis配置檔案SpringMVCMyBatis
- MyBatis--主配置檔案詳解MyBatis
- spring和Mybatis的核心配置檔案SpringMyBatis
- C# Log4net配置檔案 總結C#
- Mybatis【配置檔案】就是這麼簡單MyBatis
- Spring Boot+Mybatis專案總結Spring BootMyBatis
- 03.MyBatis學習-----全域性配置檔案_properties_引入外部配置檔案MyBatis
- Python常用配置檔案ini、json、yaml讀寫總結PythonJSONYAML
- SpringMVC+Spring+Mybatis配置的簡要總結SpringMVCMyBatis
- mybatis的全域性配置檔案SqlMapConfig.xml解析MyBatisSQLXML
- mybatis之sql查詢配置檔案resultType和resultMapMyBatisSQL
- MyBatis 核心配置檔案詳細內容詳解MyBatis
- SpringBoot資料訪問之整合Mybatis配置檔案Spring BootMyBatis
- Mybatis Plus 框架專案落地實踐總結MyBatis框架
- PHP檔案包含小總結PHP
- Maven專案中resources配置總結Maven
- MyBatis 學習總結MyBatis
- Mybatis學習總結MyBatis
- Mybatis筆記總結MyBatis筆記
- MyBatis 結果對映總結MyBatis
- C#讀寫檔案總結C#
- 檔案上傳漏洞總結(全)
- mybatis原始碼配置檔案解析之五:解析mappers標籤(解析XML對映檔案)MyBatis原始碼APPXML
- mybatis動態sql總結MyBatisSQL
- sqlserver關於filestream檔案流、filetable檔案表的總結SQLServer
- MyBatis學習總結(24)——Mybatis常見問題彙總MyBatis
- Mybatis 學習筆記(一)——配置檔案SqlMapConfig.xml和對映檔案Mapper.xmlMyBatis筆記SQLXMLAPP
- (7)caffe總結之Blob,Layer and Net以及對應配置檔案的編寫
- 檔案屬性及find命令總結
- Android 關於 so 檔案的總結Android
- python 檔案操作的基礎總結Python
- Python檔案操作方法大總結Python
- Git配置配置檔案Git
- Mybatis引數處理總結MyBatis