MyBatis(2)-全域性配置檔案
本文的程式碼是在MyBatis(1)-簡單入門基礎之上進行學習的,如有不懂請先看此博文 ofollow,noindex" target="_blank"> MyBatis(1)-簡單入門 !
1)配置檔案的安裝
--->在聯網的情況下,點選去下載 http://mybatis.org/dtd/mybatis-3-config.dtd
--->未聯網:去mybatis的jar包->org.apache.ibatis.builder.xml->資料夾下的兩個.dtd檔案解壓
點選選中我們的dtd地址選中->preferences->XML->XML Catalog->ADD->Location是檔案的地址,Key type必須選中URI,Key就是我們的dtd地址->選擇合適的地址
引入成功之後,我們輸入在myeclipse中鍵盤Alt+/會有提示,需要關閉重啟
目錄如下:
2)屬性講解:
2.1) properties
properties:可以使用properties來引入外部的properties配置檔案內容
屬性:
resource:引用類路徑下的資源
url:引入網路或者磁碟路徑下的資源
db.properties在同一目錄下,所以可以直接寫處檔案的名字
假設db.properties在com.MrChengs.db目錄下
此時resource="com.MrChengs/db/db.properties"
在於spring整合的時候就會相對比較少的使用這個屬性!
2.1.1)首先建立db.properties檔案,其目錄如下圖所示
注意:配置檔案的位置,在resource裡面的路徑問題
db.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=9876
2.1.2)在mybatis-config.xml檔案中加入
<properties resource="db.properties" ></properties>
2.2.3)得到我們的資料資訊
<environment id="development"> <transactionManager type="JDBC" /> <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>
此時我們再次執行之前的測試程式碼,一樣可以查詢出結果
/------------------------------------------------------------分割線------------------------------------------------------------/
2.2) settings
這是MyBatis中極為重要的調整設定,他會改變MyBatis的執行行為
用來設定每一個設定項的
有很多的屬性標籤
name:設定項的名字
value:設定項的取值
例項:mybatis-config.xml加入
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
假設我們資料庫的欄位和類的欄位不一樣:資料庫----last_name 類----lastName
此時使用這個駝峰命名發,即可匹配到兩者之間的關係,否雜而在查詢的時候可能會顯示為null
此處不在做詳細的測試,可以參考相關的文件。
/------------------------------------------------------------分割線------------------------------------------------------------/
typeAliases
(別名處理器)
把java型別起一個簡單的名字,可以減少工作量
2.3.1)單個類起別名:
2.3.1.1在mybatis-config.xml檔案中: 此時使用預設的系統命名法
<typeAliases> <!-- 為某個java型別起別名 type:指定起別名的全類名,預設就是類名小寫 可以用alias為起指定新的別名 我們此時給Employee起別名 --> <typeAlias type="com.MrChengs.bean.Employee"/> </typeAliases>
2.3.1.2)在EmployeeMapper.xml檔案中
<!-- 介面式程式設計 --> <select id="getEmployee" resultType="employee"> select id,name,gender,email from test where id = #{id} </select>
我們繼續使用上次的查詢方法進行修改,在 預設 不命名的情況下,是類的 小寫 !
此時可以查詢成功!
2.3.2)使用alias
2.3.2.1)在mybatis-config.xml檔案中,是在2.3.1中的例項中加入alias
此時把其類命名為emp
<typeAlias type="com.MrChengs.bean.Employee" alias="emp"/>
2.3.2.2)在EmployeeMapper.xml檔案中
<select id="getEmployee" resultType="emp"> select id,name,gender,email from test where id = #{id} </select>
此時可以查詢成功!
2.3.3)多個類一起起別名時
2.3.3.1)在mybatis-config.xml
<typeAliases> <!-- package:為某個包下的 所有類批量起別名 name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個別名(預設類名小寫) --> <package name="com.MrChengs.bean"/> </typeAliases>
2.3.3.2)EmployeeMapper.xml檔案中
<select id="getEmployee" resultType="Employee"> select id,name,gender,email from test where id = #{id} </select>
此時查詢是可以成功的!
2.3.4)在多各類一起起別名時
容易產生一個問題,假設此時子包裡和父包了都有一個同名類
此時MyBatis會很難進行區分,所有有以下的方法:
2.3.4.1)在Employee.java中
並且使用 @Alias進行重新命名
2.3.4.2)EmployeeMapper.xml檔案中引用我們所建立的新的別名"empl"
<select id="getEmployee" resultType="empl"> select id,name,gender,email from test where id = #{id} </select>
此時會編譯得到我們想要的答案!
注意:在起別名的時候,不區分大小寫!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.4) typeHandlers
架起java型別和資料庫型別的對映
使用方法:

/------------------------------------------------------------分割線------------------------------------------------------------/
2.5) plugins
待補充。。。
/------------------------------------------------------------分割線------------------------------------------------------------/
2.6) environments 環境
可以配置多種環境
<environments default="development">
default:可以指定使用那種環境,可以進行快速的切換
environment:配置一個具體的環境,可以配置多個具體環境,且必須配置
id:代表當前環境的唯一標識
transactionManager:事物管理器
type:事物管理器的型別,有兩個取值 JDBC(使用mysql)/MANAGED(使用j2ee自帶的)
dataSource:資料來源
type:資料來源型別 POOLED(使用連線池)/JNDI/UNPOOLEN(不使用連線池)
property:資料來源的相關資訊
<environment id="development"> <transactionManager type="JDBC" /> <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>
具體的講解如上!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.7) databaseIdProvider
程式碼在environments標籤下面
可移植性的重要性
支援多資料庫的廠商的
2.7.1)在mybatis-config.xml
type="DB_VENDOR"固定值,作用是得到資料庫廠商的標識來執行不同的SQL語句
<databaseIdProvider type="DB_VENDOR"> <!-- 為不同資料庫起別名 --> <property name="MySQL" value="mysql"/> <property name="SqlSever value="sqlSever"/> </databaseIdProvider>
2.7.2)引用方式
假設此時databaseId=sqlSever,則執行的是SqlSever資料庫!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.8) mappers
將sql對映註冊到全域性配置中
mapper註冊一個sql對映
resource:引用類路徑下的sql對映檔案
uri:引用網路或這磁碟路徑下的sql對映檔案
class:引用註冊(介面)
有sql對映檔名必須和介面同名,並放在同意目錄下
一般的mapper都放在mapper包裡面
假設在mybatis.mapper包裡面
則resource="mybatis/mapper/xxxx.xml
在mybatis-config.xml檔案的最底部
<mappers> <mapper resource="EmployeeMapper.xml" /> </mappers>
此時此刻配置檔案差不多講到這裡要結束了
此時此刻,把本次博文是修改到的程式碼奉上,結合MyBatis(1)-簡單入門!
3.1)mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 1.properties:可以使用properties來引入外部的properties配置檔案內容 屬性: resource:引用類路徑下的資源 url:引入網路或者磁碟路徑下的資源 db.properties在同一目錄下,所以可以直接寫處檔案的名字 假設db.properties在com.MrChengs.db目錄下 此時resource="com.MrChengs/db/db.properties" --> <properties resource="db.properties" ></properties> <!-- 2.settings設定 這是MyBatis中極為重要的調整設定,他會改變MyBatis的執行行為 用來設定每一個設定項的 name:設定項的名字 value:設定項的取值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 3.typeAliases:別名處理器 --> <typeAliases> <!-- 為某個java型別起別名 type:指定起別名的全類名,預設就是類名小寫 可以用alias為起指定新的別名 我們此時給Employee起別名 --> <typeAlias type="com.MrChengs.bean.Employee" alias="emp"/> <!-- package:為某個包下的 所有類批量起別名 name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個別名(預設類名小寫) --> <package name="com.MrChengs.bean"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <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> <!-- 5.databaseIdProvider 支援多資料庫的廠商的 type="DB_VENDOR"固定值,作用是得到資料庫廠商的標識來執行不同的SQL語句 --> <databaseIdProvider type="DB_VENDOR"> <!-- 為不同資料庫起別名 --> <property name="MySQL" value="mysql"/> </databaseIdProvider> <!-- 將我們寫好的sql對映檔案(EmployeeMapper.xml)一定要註冊到全域性配置檔案(mybatis-config.xml)中 --> <mappers> <mapper resource="EmployeeMapper.xml" /> </mappers> </configuration>
3.2)EmployeeMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.MrChengs.dao.EmployeeMapper"> <!-- 原生 --> <select id="getId" resultType="com.MrChengs.bean.Employee"> select id,name,gender,email from test where id = #{id} </select> <!-- 介面式程式設計 --> <select id="getEmployee" resultType="empl" databaseId="mysql"> select id,name,gender,email from test where id = #{id} </select> </mapper>
本次博文到此結束,謝謝您的瀏覽,如果問題,請提出,博主及時修改。