(1)在全局配置文件中編寫數據源信息java
<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}獲取數據源信息值,以下:mysql
<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.propertiessql
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}獲取數據源信息值,以下:mybatis
<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>
配置以下:oracle
<settings> <setting name="cacheEnabled" value="true"/> </settings>
<typeAliases> <!--type:POJO類的全限定類名(全路徑 + 文件名) alias:別名--> <typeAlias type="com.example.mybatis.pojo.User" alias="user"/> <typeAlias type="com.example.mybatis.pojo.Account" alias="account"/> </typeAliases>
<typeAliases> <!--name:存放POJO類的全路徑 + 包名--> <package name="com.emample.mybatiscrud.pojo"/> </typeAliases>
沒有配置typeAliases
前,resultType
的值必須爲POJO類的全限定類名
以下:app
<select id="findAll" resultType="com.emample.mybatiscrud.pojo.User"> SELECT * FROM user </select>
配置以後resultType能夠直接寫別名,以下:ide
<select id="findAll" resultType="user"> SELECT * FROM user </select>
起別名的好處是:提升了代碼的可讀性url
用於配置鏈接數據庫的環境,基本配置以下
<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>
該標籤用於支持數據庫的移植性
有兩組數據庫的數據源信息
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> <!--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>
<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則不用