一、mybatis的架構類型
二、mybatis-config.xml的詳細配置
鑑於前兩章沒有把全局配置文件單獨拎出來分析,這一篇寫出來彌補一下。
1) 爲什麼呢?我們先來看看mybatis的使用步驟:
1、配置mbatis的全局配置文件(包含數據源和外部的mapper);
2、創建sqlSessionFactory;
3、通過SqlSessionFactory創建sqlSession類;
4、調用sqlSession操作數據庫CRUD;
5、調用session.commit()提交事務;
6、調用session.close();關閉會話
看看,全局配置是老大
2)mybatis的配置是有嚴格順序的,設置(settings)和屬性(properties)對mybatis的攻擊力最大
來看configuration的配置信息
properties屬性
settings設置
typeAliases類型別名
typeHandlers類型處理器
objectFactory對象工廠
plugins插件
environments環境
environment環境變量
transactionManager事務管理器
dataSource數據源
databaseldProvider數據庫廠商標誌
mappers映射器
a、 properties屬性讀取外部資源(比如數據庫連接信息),資源路徑有兩種:resource--相對路徑;url--絕對路徑
b、settings 參數有很多,但是我們常用的只有4種,如下:
設置參數 | 描述 | 有效值 | 默認值 |
cacheEnabled | 該配置影響的所有映射器中配置的緩存的全局開關。 | true | false | true |
lazyLoadingEnabled | 延遲加載的全局開關。當開啓時,所有關聯對象都會延遲加載。特定關聯關係中可通過設置fetchType屬性來覆蓋該項的開關狀態。 | true | false | false |
aggressiveLazyLoading | 當啓用時,帶有延遲加載屬性的對象的加載與否完全取決於對任意延遲屬性的調用;反之,每種屬性將會按需加載。 | true | false | true |
mapUnderscoreToCamelCase | 是否開啓自動駝峯命名規則(camel case)映射,即從經典數據庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似映射。 | true | false | False |
c、typeAliases類型處理器:使用頻率高的是駝峯匹配,即從經典的數據庫列名到經典的Java屬性名的映射
也可以單獨開啓類型別名,但是如果有多個POJOs,每個都要去配置,很容易弄混淆,一般不推薦,直接開啓包名掃描比較好
d、plugins插件,又稱攔截器,可以應用在分頁等方面
e、 environments 環境一般配置默認爲development(開發者)模式,build也可以
f、 mappers一般是各類接口的動態實現類,屬性爲命名空間和CRUD語句
引入外部映射文件,有4種方式
方式一:resource,如果有多個就很麻煩了
方式二:file,引入硬盤目錄下的文件(一般不用,不穩定)
方式三:class,配置接口的全路徑
方式四:package,開啓包名掃描
g、 typeHandlers類型處理器:主要用於數據庫取值時,#{}該佔位符對sql語句實現預處理,無需關注數據類型,mybatis自動 實現對數據類型的轉換,應用該類型處理器;順便講一下${}取值,用於sql語句的拼接,需要自行判斷數據類型,不能防止sql的注入。
三、Mapper.xml
映射文件裏的屬性就很明瞭了,namespace, resultType, parameterType,CRUD等等,請參考作者其它總結,本篇文章不作贅述。