Properties標簽 第一種:全局配置文件內部配置數據源信息 (1)在全局配置文件中編寫數據源信息 <properties> <!--name指定數據源名稱,value指定其值--> <property name="driver" value="com.mysql.jdbc.Driver"/> ...
Properties標簽
第一種:全局配置文件內部配置數據源信息
(1)在全局配置文件中編寫數據源信息
<properties>
<!--name指定數據源名稱,value指定其值-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</properties>
(2)獲取數據源信息
<environments>
中的<property>
標簽通過${name}獲取數據源信息值,如下:
<environments default="mysql">
<!--id設定編號-->
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<!--MyBatis預設有三種數據源
UNPOOLED 當需要資料庫鏈接時創建,使用結束後銷毀。
POOLED 連接池,有容器的概念,當資料庫連接使用完之後會被回收,以隊列的形式排在隊尾並賦予新的編號
提高了獲取連接的效率
JDNI 伺服器提供的數據源,結構為Map
-->
<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>
第二種:外部配置數據源信息
(1)編寫數據源信息
文件名:jdbcConfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
jdbc.username=root
jdbc.password=12345
(2)引入外部配置文件
全局配置文件需要引入該文件,在全局配置文件中進行如下配置:
<!--resource:外部文件的全路徑 + 文件名-->
<properties resource="cofig/jdbcConfig.properties"/>
結構如下:
(3)獲取配置源信息
<environments>
中的<property>
標簽通過${name}獲取數據源信息值,如下:
<environments default="mysql">
<environment id="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>
</environments>
Setting標簽
配置如下:
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
typeAliases標簽
第一種:用typeAlias標簽配置
<typeAliases>
<!--type:POJO類的全限定類名(全路徑 + 文件名)
alias:別名-->
<typeAlias type="com.example.mybatis.pojo.User" alias="user"/>
<typeAlias type="com.example.mybatis.pojo.Account" alias="account"/>
</typeAliases>
第二種:用package標簽配置
<typeAliases>
<!--name:存放POJO類的全路徑 + 包名-->
<package name="com.emample.mybatiscrud.pojo"/>
</typeAliases>
沒有配置typeAliases
前,resultType
的值必須為POJO類的全限定類名
如下:
<select id="findAll" resultType="com.emample.mybatiscrud.pojo.User">
SELECT * FROM user
</select>
配置之後resultType可以直接寫別名,如下:
<select id="findAll" resultType="user">
SELECT * FROM user
</select>
起別名的好處是:提高了代碼的可讀性
environments 標簽
用於配置連接資料庫的環境,基本配置如下
<environments default="mysql">
<!--id設定編號-->
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<!--MyBatis預設有三種數據源
UNPOOLED 當需要資料庫鏈接時創建,使用結束後銷毀。
POOLED 連接池,有容器的概念,當資料庫連接使用完之後會被回收,以隊列的形式排在隊尾並賦予新的編號
提高了獲取連接的效率
JDNI 伺服器提供的數據源,結構為Map
-->
<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>
</environments>
databaseIdProvider標簽
該標簽用於支持資料庫的移植性
有兩組資料庫的數據源信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
jdbc.username=root
jdbc.password=12345
orcl.driver=oracle.jdbc.OracleDriver
orcl.url = jdbc:oracle:thin:@localhost:1521:mybatis
orcl.username=scott
orcl.password=12345
除此之外,還需要添加兩種類型的資料庫驅動,全局配置文件配置兩種資料庫的環境,這裡省略
在全局配置文件中配置databaseIdProvider,如下
<!--databaseProvider:支持多資料庫廠商的;
type="DB——VENDOR",VendorDatabaseIdProvider
作用就是得到資料庫廠商的表示(驅動getDatabaseProductName())-->
<databaseIdProvider type="DB_VENDOR">
<!--為不同的資料庫廠商起別名-->
<property name="MySqL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
一個抽象方法
UserDao
/**
* 查詢所有用戶,同時獲取用戶下所有賬戶的信息
*/
List<User> findAll();
多個同名配置
某些情況下,mysql和oracle執行的語句結構不一樣所以需要出現同名方法的多個配置
通過databaseId來指定在什麼資料庫環境下用哪個配置
<select id="findAll" resultType="user" databaseId="oracle">
select * FROM user
</select>
<select id="findAll" resultType="user" databaseId="mysql">
select * FROM user
</select>
Mappers 標簽
用於映射註冊
第一種:適用於“介面 + 映射文件”的開發方式
<mappers>
<!--resource指定映射文件的全路徑+映射文件名-->
<mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
</mappers>
第二種:適用於“介面式”的開發方式
<mappers>
<!--resource指定映射文件的全路徑+映射文件名-->
<mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
<mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
<!--class指定介面文件的全路徑 + 介面文件名-->
<mapper class="com.emample.mybatiscrud.dao.UserDao"/>
</mappers>
第三種:package配置方式
<mappers>
<!--resource指定映射文件的全路徑+映射文件名-->
<mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
<mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
<!--name為存放介面文件的全路徑 + 包名-->
<package name="com.emample.mybatiscrud.dao"/>
</mappers>
前面兩種配置方式都需要,沒創建一個新的Mapper就需要註冊一次
而是用package則不用