Mybatis的配置檔案詳解
##1、properties
(1)、可以使用標籤來引入外部properties配置檔案的內容,一般用於引入資料來源:
a)、resource:引入類路徑下的資源
b)、url:引入網路路徑或者磁碟路徑下的資源
<properties resource="dbconfig.properties"></properties>
##2、settings
(1)、settings中包含很多重要的設定項,用標籤來設定每一個設定項:
name:設定項名, value:設定項取值
<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"/> <!-- 配置預設的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(prepared statements); BATCH 執行器將重用語句並執行批量更新。 -- > <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"/> <!-- 當沒有為引數提供特定的 JDBC 型別時,為空值指定 JDBC 型別。 某些驅動需要指定列的 JDBC 型別, 多數情況直接用一般型別即可,比如 NULL、VARCHAR 或 OTHER。 --> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> <!-- 開啟駝峰命名規則 -- > <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
##3、typeAliases
(1)、typeAliases(別名處理器):可以在<typeAliases>標籤中,用<typeAlias>標籤為我們的java型別起別名,別名不區分大小寫; (2)、typeAlias:為某個java型別起別名: a)、type:指定要起別名的型別全類名,預設別名就是類名小寫;employee b)、alias:指定新的別名 <typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/> <typeAlias alias="Comment" type="domain.blog.Comment"/> <typeAlias alias="Post" type="domain.blog.Post"/> <typeAlias alias="Section" type="domain.blog.Section"/> <typeAlias alias="Tag" type="domain.blog.Tag"/> </typeAliases> 當這樣配置時,任何使用domain.blog.Blog的地方都可以用Blog代替。 (3)、package:為某個包下的所有類批量起別名: name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個預設別名,類名小寫) <package name="com.scorpios.mybatis.bean"/> (4)、批量起別名的情況下,使用@Alias註解為某個型別指定新的別名 --> 每一個在包com.scorpios.mybatis.bean中的Java Bean,在沒有註解的情況下,會使用Bean的首字母小寫的非限定類名來作為它的別名。比如 com.scorpios.mybatis.bean.Author的別名為 author;若有註解,則別名為其註解值。看下面的例子: @Alias("author") public class Author {}
##4、environments
(1)、environments:mybatis可以配置多種環境 ,default指定使用某種環境。可以達到快速切換環境。 (2)、environment:配置一個具體的環境資訊,必須有兩個標籤, a)、id代表當前環境的唯一標識; b)、transactionManager:事務管理器; c)、type:事務管理器的型別; JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory) d)、定義事務管理器:實現TransactionFactory介面.type指定為全類名 dataSource:資料來源; type:資料來源型別;UNPOOLED(UnpooledDataSourceFactory) |POOLED(PooledDataSourceFactory) |JNDI(JndiDataSourceFactory) 自定義資料來源:實現DataSourceFactory介面,type是全類名 <environments default="dev_mysql"> <!--mysql環境--> <environment id="dev_mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> <!--oracle環境--> <environment id="dev_oracle"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${orcl.driver}" /> <property name="url" value="${orcl.url}" /> <property name="username" value="${orcl.username}" /> <property name="password" value="${orcl.password}" /> </dataSource> </environment> </environments>
##5、databaseIdProvider
(1)、databaseIdProvider:支援多資料庫廠商;
(2)、type=“DB_VENDOR”:VendorDatabaseIdProvider作用就是得到資料庫廠商的標識(驅動getDatabaseProductName()),mybatis就能根據資料庫廠商標識來執行不同的sql;
(3)、MySQL,Oracle,SQL Server
<databaseIdProvider type="DB_VENDOR">
<!-- 為不同的資料庫廠商起別名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
##6、mappers
(1)、作用:將sql對映註冊到全域性配置中
(2)、將我們寫好的sql對映檔案(EmployeeMapper.xml)一定要註冊到全域性配置檔案(mybatis-config.xml)中 -->
(3)、mappers:將sql對映註冊到全域性配置中
(4)、mapper:註冊一個sql對映
resource:引用類路徑下的sql對映檔案,mybatis/mapper/EmployeeMapper.xml
url:引用網路路徑或者磁碟路徑下的sql對映檔案,file:///var/mappers/AuthorMapper.xml
註冊介面
class:引用(註冊)介面,
1、有sql對映檔案,對映檔名必須和介面同名,並且放在與介面同一目錄下;
2、沒有sql對映檔案,所有的sql都是利用註解寫在介面上;
<mappers>
<mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
<mapper class="com.scorpios.mybatis.dao.EmployeeMapperAnnotation"/>
<!-- 批量註冊: -->
<package name="com.scorpios.mybatis.dao"/>
</mappers>
##配置完之後的使用
1、根據xml配置檔案(全域性配置檔案)建立一個SqlSessionFactory物件,有資料來源一些執行環境資訊
2、sql對映檔案,配置了每一個sql,以及sql的封裝規則等;
3、將sql對映檔案註冊在全域性配置檔案中;
4、寫程式碼:
1)、根據全域性配置檔案得到SqlSessionFactory;
2)、使用sqlSession工廠,獲取到sqlSession物件使用他來執行增刪改查
一個sqlSession就是代表和資料庫的一次會話,用完關閉
3)、使用sql的唯一標誌來告訴MyBatis執行哪個sql,sql都是儲存在sql對映檔案中的