mybatis——config全域性配置檔案解析
原文:https://www.cnblogs.com/pjfmeng/p/7677773.html
在全集配置檔案中引入dtd約束“http://mybatis.org/dtd/mybatis-3-config.dtd”,主要有以下幾個標籤,現在詳細解釋下這幾個標籤的使用
1、properties屬性----引入外部properties配置檔案
<?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、mybatis使用properties來引入外部properties配置檔案的內容 resource 引入類路徑下資源 url 引入網路路徑或磁碟路徑下資源 --> <properties resource="db.properties"></properties> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
db.properties檔案
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis
jdbc.name=root
jdbc.password=tuniu520
相當有之前寫的,這裡的jdbc連線資訊寫在datasource中的property屬性下,沒有引入外部配置檔案
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置資料庫連線資訊 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis" /> <property name="username" value="root" /> <property name="password" value="tuniu520" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
2、settings 執行時行為設定
可檢視mybatis文件,settings有很多配置項,如
這裡試驗下mapUnderscoreToCamelCase,可以自動完成hotelName到資料庫中欄位hotel_name的轉換
<?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、mybatis使用properties來引入外部properties配置檔案的內容 resource 引入類路徑下資源 url 引入網路路徑或磁碟路徑下資源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的設定項 setting標識具體的設定項 name表示設定項的名字 value表示設定項的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
之前寫的sql語句可以直接修改成
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
select id,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel
where id=#{id}
</select>
修改為
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
select * from hotel where id=#{id}
</select>
mybatis會自動完成駝峰轉換
3、typeAliases別名配置
檢視程式碼中3的註解
<?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、mybatis使用properties來引入外部properties配置檔案的內容
resource 引入類路徑下資源
url 引入網路路徑或磁碟路徑下資源 -->
<properties resource="db.properties"></properties>
<!-- 2、settings包含很多重要的設定項
setting標識具體的設定項
name表示設定項的名字
value表示設定項的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 3、typeAliases 為java型別起別名,別名不區分大小寫
typeAlias 為某個具體的java型別取別名
type java類的全類名,預設別名就是類名小寫
alias 自定義別名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package為某個包下面所有類批量起別名
name 表示包的名稱 預設別名為類名小寫
這裡重複配置了Hotel類,複製的時候注掉一種配置-->
<package name="com.pjf.mybatis.po" />
</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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>
已經為許多常見的 Java 型別內建了相應的類型別名。它們都是大小寫不敏感的,需要注意的是由基本型別名稱重複導致的特殊處理,8種基本資料型別類型別名是下劃線加資料型別。
4、typeHandlers 型別處理器
將java中的型別和資料庫中的型別進行對映
<!-- typeHandlers 型別處理器
mybatis3.4之後,這些型別處理器都是自動註冊的
-->
<typeHandlers>
<typeHandler handler="BooleanTypeHandler"/>
</typeHandlers>
可以填寫以下處理器
5、environments環境配置
<?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、mybatis使用properties來引入外部properties配置檔案的內容
resource 引入類路徑下資源
url 引入網路路徑或磁碟路徑下資源 -->
<properties resource="db.properties"></properties>
<!-- 2、settings包含很多重要的設定項
setting標識具體的設定項
name表示設定項的名字
value表示設定項的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 3、typeAliases 為java型別起別名,別名不區分大小寫
typeAlias 為某個具體的java型別取別名
type java類的全類名,預設別名就是類名小寫
alias 自定義別名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package為某個包下面所有類批量起別名
name 表示包的名稱 預設別名為類名小寫
<package name="com.pjf.mybatis.po" />
-->
</typeAliases>
<!-- 4、typeHandlers 型別處理器-->
<typeHandlers>
<typeHandler handler=""/>
</typeHandlers>
<!-- 5、environments環境配置,可以配置多種環境 default指定使用某種環境,可以達到快速切換
environment配置一個具體的環境資訊,必須有如下兩個標籤,id表示當前環境的唯一標識
transactionManager 事物管理器
type 事物管理器的型別 有兩種取值
JDBC
managed
dataSource 資料來源
type 有三種[UNPOOLED|POOLED|JNDI]
-->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<!-- 配置資料庫連線資訊 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
<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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>
6、mappers sql對映檔案註冊
<?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、mybatis使用properties來引入外部properties配置檔案的內容
resource 引入類路徑下資源
url 引入網路路徑或磁碟路徑下資源 -->
<properties resource="db.properties"></properties>
<!-- 2、settings包含很多重要的設定項
setting標識具體的設定項
name表示設定項的名字
value表示設定項的值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 3、typeAliases 為java型別起別名,別名不區分大小寫
typeAlias 為某個具體的java型別取別名
type java類的全類名,預設別名就是類名小寫
alias 自定義別名 -->
<typeAliases>
<typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
<!-- package為某個包下面所有類批量起別名
name 表示包的名稱 預設別名為類名小寫
<package name="com.pjf.mybatis.po" />
-->
</typeAliases>
<!-- 4、typeHandlers 型別處理器-->
<typeHandlers>
<typeHandler handler=""/>
</typeHandlers>
<!-- 5、environments環境配置,可以配置多種環境 default指定使用某種環境,可以達到快速切換
environment配置一個具體的環境資訊,必須有如下兩個標籤,id表示當前環境的唯一標識
transactionManager 事物管理器
type 事物管理器的型別 有兩種取值
JDBC
managed
dataSource 資料來源
type 有三種[UNPOOLED|POOLED|JNDI]
-->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<!-- 配置資料庫連線資訊 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
<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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--6、 mappers將sql對映註冊到全域性配置檔案中
mapper註冊一個sql對映
1、註冊配置檔案
resource引用類路徑下檔案
url 引用網路上或磁碟路徑下檔案
2、註冊mapper介面
class 有對映檔案,介面和對映檔案必須同名,而且放在同一個路徑裡
如果沒有對映檔案,sql語句使用註解的方式,就需要註冊介面了
3、package批量註冊
使用批量註冊, 介面和對映檔案必須同名,而且放在同一個路徑裡
-->
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
<mapper class=""/>
<package name="com.pjf.mybatis.po"/>
</mappers>
</configuration>
7、databaseIdProvider多資料庫支援
MyBatis 可以根據不同的資料庫廠商執行不同的語句,這種多廠商的支援是基於對映語句中的 databaseId 屬性。 MyBatis 會載入不帶 databaseId 屬性和帶有匹配當前資料庫 databaseId 屬性的所有語句。 如果同時找到帶有 databaseId 和不帶 databaseId 的相同語句,則後者會被捨棄。
<databaseIdProvider type="DB_VENDOR"></databaseIdProvider>
8、plugins 外掛
MyBatis 允許你在已對映語句執行過程中的某一點進行攔截呼叫。
<plugins> <plugin interceptor=""></plugin> </plugins>
注:這些標籤編寫是有先後順序的,可以吧滑鼠放在configuration上,就可以看到順序了
(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)