Mybatis核心配置文件SqlMapConfig.xml配置
核心配置文件中標籤的順序如下圖所示:
1.properties(屬性):
將核心配置文件的某些屬性(連接池的四大基本屬性),可以在外部的properties核心配置文件中通過表達式引用。
配置步驟:
第一步:定義properties文件,配置屬性信息
第二步:核心配置文件中引入外部屬性文件
注意:標籤順序,properties處在跟標籤configuration下,第一順位的位子。
第三步:在覈心配置文件中使用表達式直接引用屬性值(因爲properties文件中存放的對象都是以鍵值對的形式存放),可以通過$符號,從中取出來。
2.settings(設置)(瞭解)
這是mybatis中極爲重要的調整設置,他們會改變mybatis的運行時行爲。一般不做操作
一個完整的settings配置如下所示:
<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>
3.typealiases(別名)
含義:給類名起別名,小名。**(使用簡短的單詞代替java類型的全限定名:包名+類名)**僅用於 XML 配置,意在降低冗餘的全限定類名書寫
使用:
typeAliases:別名標籤
type:類的全限定名
alias:別名
第二種方式起別名:
代指給當前包下所有的實體類起別名,當前包下類型的別名是類名,忽略大小寫。
第三種方式:下面是一些爲常見的 Java 類型內建的類型別名。它們都是不區分大小寫的,注意,爲了應對原始類型的命名重複,採取了特殊的命名風格
4.對象工廠(objectfactory)
每次Mybatis創建結果對象的新實例時,他都會使用一個對象工廠(ObjectFactory)實例來完成實例化工作。默認的對象工廠需要做的僅僅是實例化目標類,要麼通過默認無參構造方法,要麼通過存在的參數映射來調用帶有參數的構造方法。如果想要覆蓋對象工廠的默認行爲,可以通過創建自己的對象工廠來實現。比如:
// ExampleObjectFactory.java
public class ExampleObjectFactory extends DefaultObjectFactory {
public Object create(Class type) {
return super.create(type);
}
public Object create(Class type, List<Class> constructorArgTypes, List<Object> constructorArgs) {
return super.create(type, constructorArgTypes, constructorArgs);
}
public void setProperties(Properties properties) {
super.setProperties(properties);
}
public <T> boolean isCollection(Class<T> type) {
return Collection.class.isAssignableFrom(type);
}}
<!-- mybatis-config.xml -->
<objectFactory type="org.mybatis.example.ExampleObjectFactory">
<property name="someProperty" value="100"/>
</objectFactory>
ObjectFactory 接口很簡單,它包含兩個創建實例用的方法,一個是處理默認無參構造方法的,另外一個是處理帶參數的構造方法的。 另外,setProperties 方法可以被用來配置 ObjectFactory,在初始化你的 ObjectFactory 實例後, objectFactory 元素體中定義的屬性會被傳遞給 setProperties 方法。
5.環境配置(environments)
Mybatis可以配置適應多種環境,這種機制有助於將SQL映射應用於多種數據庫之中,現實情況也有多種理由這麼做。例如:開發、測試和生產環境需要有不同的配置;或者想在具有相同 Schema 的多個生產數據庫中使用相同的 SQL 映射。還有許多類似的使用場景。
不過要記住:儘管可以配置多個環境,但每個SqlSessionFactory實例只能選擇一種環境。
所以,如果你想連接兩個數據庫,就需要創建兩個SqlSessionFactory 實例,每個數據庫對應一個。而如果是三個數據庫,就需要三個實例,依此類推,記起來很簡單。
environments元素定義瞭如何配置環境
<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>
注意:
默認使用的環境ID(比如:default=“development”)
每個environment元素定義的環境ID(比如:id=“development”)
事務管理器的配置(比如:type=“JDBC”)
數據源的配置(比如:type=“POOLED”)
6.映射器(mappers)
1.使用相對於類路徑的資源引用:mapper–resource
2.使用完全限定資源定位符(URL)
3.使用映射器接口實現類的完全限定類名
映射器接口實現類的完全限定類名:映射文件中的namespace屬性值,接口的全限定名
將映射文件放到接口包下,代替了實現類。
使用Eclipse開發過程中, 通常情況下,映射文件與接口在同一包下,名稱相同
4.將包內的映射器接口實現全部註冊爲映射器
將映射文件放到接口包下,代替了實現類。*
使用Eclipse開發過程中, 通常情況下,映射文件與接口在同一包下,名稱相同