Mybatis之加载mybatis-config.xml
為什么80%的碼農都做不了架構師?>>> ??
概述
每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的實例為中心的。SqlSessionFactory 都是通過 SqlSessionFactoryBuilder 來創建的,SqlSessionFactoryBuilder需要通過Configuration對象來構建SqlSessionFactory。
一個Configuration對象可以使用Java程序生成,然而最常規的做法是從XML文件中加載,因此Mybatis的初始化就是通過SqlSessionFactoryBuilder 來加載一個 mybatis-config.xml、Mapper映射文件,這些配置信息會轉換成相應的對象并且最終會保存到Configuration對象中。
mybatis-config.xml的元素
Mybatis的XML文件中包含了多個元素,這些元素都是通過XMLConfigBuild類來進行解析的,并且轉換成對象存入Configuration對象中。
這些元素包含了
- <properties/>
- <settings/>
- <typeAliases/>
- <plugins/>
- <objectFactory/>
- <objectWrapperFactory/>
- <reflectorFactory/>
- <environments/>
- <databaseIdProvider/>
- <typeHandlers/>
- <mappers/>
properties
定義一些列的屬性,XML文件后面的內容中可以引用這些屬性。可以單獨設置,也可以指定一個properties文件方便統一管理。例如:
<properties resource="cre.properties" />屬性的優先級:
SqlSessionFactoryBuilder的Properties參數 >>>>>>>>?<properties/>標簽的外部屬性文件 >>>>>>>>?<properties/>標簽內部定義的屬性
PS:Mybatis中解析mybatis-config.xml會把占位符用屬性值替換掉,是XPathParser類實現的。
settings
用來設置Mybatis的Configuration對象的一些屬性的,可以設置一些自定義的用來覆蓋Configuration中的默認值。<settings/>的子標簽,用來設置相應的Configuration對象里面的屬性。
1、比如可以設置日志實現:
<!-- 指定Mybatis使用log4j --> <settings><setting name="logImpl" value="SLF4J"/> </settings>PS:例子中的SLF4J是一個別名,對應的全限定類名為
typeAliasRegistry.registerAlias("SLF4J", Slf4jImpl.class);2、比如設置自定義的VFS實現類,得是全限定名
<settings><setting name="vfsImpl" value="xx.xx.xx"/> </settings>typeAliases
用來配置別名,為類全限定名指定一個別名,后面在mybatis的使用當中可以使用別名,方便我們編寫mapper文件,可以指定某個類,也可以指定一個包名。
plugins
用來添加自定義的攔截器到Configuration的攔截器鏈當中的,比如分頁插件:
<plugins><!-- com.github.pagehelper為PageHelper類所在包名 --><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>objectFactory、objectWrapperFactory、reflectorFactory
用來配置自定義的工廠類的,這三個工廠類,是在創建java pojo對象時候使用到的,一般使用mybatis默認的就可以。這三個標簽里可以定義屬性設置給自定義類。
environments
mybatis重要的原始,包含了兩個子元素,事物和數據源。我們可以為mybatis設置多個不同的environments設置,方便不同環境的切換
databaseIdProvider
配置數據庫廠商標識的生成接口,一旦配置這個接口,會設置Configuration對象的databaseId屬性。databaseId可以用來過濾mapper文件里配置了databaseId=""的語句。
typeHandlers
自定義javaType和jdbcType的類型轉換器,mybatis內置了很多個類型轉換器,基本已經夠用了
mappers
這個是重要的標簽了,用來配置mapper信息,mybatis會解析mapper文件。mybatis能夠將數據庫數據和java類型進行自動映射的關鍵文件
總結
mybatis初始化之后會生成 SqlSessionFactory ,用戶程序可以通過 SqlSessionFactory 來操作數據庫。使用 SqlSessionFactory 生成 SqlSession ,然后獲取指定的Mapper接口,有了接口之后就可以通過調用接口方法來操作數據庫了,那么mybatis是如何將接口的方法具體映射到對應的sql語句上來執行數據庫操作的呢??
那就要看mapper文件的解析了。
?
轉載于:https://my.oschina.net/cregu/blog/3006890
總結
以上是生活随笔為你收集整理的Mybatis之加载mybatis-config.xml的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单据的多个状态字段
- 下一篇: 2019/01/29-Linux常用指令