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
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- Spring Boot 配置檔案總結Spring Boot
- MyBatis載入配置檔案MyBatis
- MyBatis學習 之 四、MyBatis配置檔案MyBatis
- 關於spring的配置檔案總結Spring
- MyBatis--主配置檔案詳解MyBatis
- C# Log4net配置檔案 總結C#
- Mybatis 總結MyBatis
- Mybatis【配置檔案】就是這麼簡單MyBatis
- SpringMvc+Spring+mybatis配置檔案SpringMVCMyBatis
- spring和Mybatis的核心配置檔案SpringMyBatis
- 03.MyBatis學習-----全域性配置檔案_properties_引入外部配置檔案MyBatis
- Spring Boot+Mybatis專案總結Spring BootMyBatis
- git config檔案總結及git alias配置Git
- Mybatis 全域性配置檔案中typeAliases(別名)MyBatis
- Spring學習總結(24)——Spring配置檔案載入路徑總結Spring
- Nginx配置檔案nginx.conf中文詳解(總結)Nginx
- Mybatis Plus 框架專案落地實踐總結MyBatis框架
- 檔案路徑總結
- Htaccess檔案用法總結
- SpringMVC+Spring+Mybatis配置的簡要總結SpringMVCMyBatis
- mybatis之sql查詢配置檔案resultType和resultMapMyBatisSQL
- MyBatis 核心配置檔案詳細內容詳解MyBatis
- MyBatis 學習總結MyBatis
- Mybatis學習總結MyBatis
- Mybatis筆記總結MyBatis筆記
- Python常用配置檔案ini、json、yaml讀寫總結PythonJSONYAML
- MyBatis 結果對映總結MyBatis
- PHP檔案包含小總結PHP
- 密碼檔案資訊總結密碼
- oracle 檔案型別總結Oracle型別
- mybatis配置檔案(其中,注意節點先後順序)MyBatis
- Spring、Spring MVC、MyBatis 整合檔案配置詳解SpringMVCMyBatis
- Spring、Spring MVC、MyBatis整合檔案配置詳解SpringMVCMyBatis
- Maven專案中resources配置總結Maven
- NFS網路檔案共享服務的配置和排錯總結NFS
- 個人吐血系列-總結MybatisMyBatis