更新時間:2021-06-21 12:04:02 來源:動力節點 瀏覽1044次
(1)properties
properties為屬性配置文件,它為上下文提供相關的資源,properties有三種配置資源的方式:
方式一:通過properties子元素配置
通過properties子元素property配置username和password變量,然后在properties下文environment節點中引用這些變量
<properties>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
在environments節點中引用username和password變量
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
方式二:通過properise的屬性配置
<properties resource="demo/mybatis/resources/jdbc.properties"/>
方式三:通過屬性參數傳遞配置
即把屬性傳遞到SqlSessionFactoryBuilder.build()中
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// ... or ...
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
Tip:當在mybatis配置文件中同時存在三種方式時,優先級順序如下:
1)首先讀取properties子元素屬性
2)其次讀取properties元素的屬性(resource和url)
3)最后讀取作為方法參數傳遞的屬性,并覆蓋以讀取的同名屬性
三種方式,存在優先級,且排在后面的配置覆蓋排在前面同名屬性的配置,鑒于此,建議在配置時,不要使用混合方式。
(2)settings
settings決定mybatis運行時行為,均有很多可配置的行為,如下為一個較完整的settings配置
View Code
(3)typeAliases
類型別名為Java類型設置一個簡短名字,它只與xml有關,用來減少類完全限定名的冗余
<typeAliases>
<typeAlias type="demo.mybatis.entity.UserInfo" alias="UserInfo"/>
</typeAliases>
這樣配置后,任何使用demo.mybatis.entity.UserInfo的地方,都可用UserInfo來代替
除此之外,還可以指定一個包名,mybatis會在包名下搜索需要的Java Bean,比如:
<typeAliases>
<package name="demo.mybatis.entity"/>
</typeAliases>
在沒注解的情況下,每個在demo.mybatis.entity中的Java Bean,會使用 Bean 的首字母小寫的非限定類名來作為它的別名。 比如demo.mybatis.entity.UserInfo的別名為userInfo.
若存在注解,則別名為注解名。
POJO設置別名
@Alias("Users")
public class User{
}
Mapper.xml
<select id="getUserInfoById" resultType="Users">
SELECT user_name ,user_addr FROM user_info WHERE user_id=#{user_id}
</select>
(4)typeHandlers
typeHandlers主要將獲取的值合理地轉化為java類型,可以轉換預處理階段(PreparedStatement)的參數和結果集中的值。mybatis提供了標準的類型處理,
同時,mybatis也支持之定義處理類型,在自定義處理類型時,只需實現org.apache.ibatis.type.TypeHandler接口,或繼承org.apache.ibatis.type.BaseTypeHandler
(5)obejctFactory
(6)plugins
(7)environments
environments環境配置,mybatis支持多種配置,從而有助于適應多種數據庫。但需要注意的是,盡管可以配置多個環境,但每個SqlSessionFactory實例只能選擇其一。
接受環境配置的兩個方法簽名:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);
忽略環境參數,則加載默認環境
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);
如下為一個環境配置示例
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
注釋:
默認的環境 ID(比如:default="development")。
每個 environment 元素定義的環境 ID(比如:id="development")。
事務管理器的配置(比如:type="JDBC")。
數據源的配置(比如:type="POOLED")。
默認的環境和環境 ID 是自解釋的,因此一目了然。你可以對環境隨意命名,但一定要保證默認的環境 ID 要匹配其中一個環境 ID。
事務管理器:
Mybatis支持兩種類型的事務管理器:
jdbc:依賴于從數據源得到的連接來管理事務作用域
managed:這個配置幾乎沒做什么。它從來不提交或回滾一個連接,而是讓容器來管理事務的整個生命周期(比如 JEE 應用服務器的上下文)。
默認情況下它會關閉連接,然而一些容器并不希望這樣,因此需要將 closeConnection 屬性設置為 false 來阻止它默認的關閉行為。例如:
<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
dataSource:
dataSource元素使用標準的JDBC數據源接口來配置JDBC連接對象的資源,有三種內建的數據源類型:
UNPOOLED:這個數據源的實現只是每次被請求時打開和關閉連接
POOLED:這種數據源的實現利用“池”的概念將 JDBC 連接對象組織起來,避免了創建新的連接實例時所必需的初始化和認證時間。 這是一種使得并發 Web 應用快速響應請求的流行處理方式
JNDI:這個數據源的實現是為了能在如 EJB 或應用服務器這類容器中使用,容器可以集中或在外部配置數據源,然后放置一個 JNDI 上下文的引用
(8)databaseIdProvider
databaseIdProvider主要功能是支持多廠商數據庫,它的實現原理是基于映射語句中的databaseId屬性。MyBatis 會加載不帶 databaseId 屬性和帶有匹配當前數據庫
databaseId 屬性的所有語句。 如果同時找到帶有 databaseId 和不帶 databaseId 的相同語句,則后者會被舍棄。 為支持多廠商特性只要像下面這樣在 mybatis-config.xml
文件中加入 databaseIdProvider
<databaseIdProvider type="DB_VENDOR" />
(9)mappers
mappers關聯映射配置文件,即告訴mybatis到哪里去找映射配置文件。有四種基本方式可以關聯映射配置文件:
方式一:使用相對于類路徑的資源引用
<!--類路徑方式-->
<mapper resource="demo/mybatis/resources/userInfo-config.xml"/>
表示的程序目錄結構如下:
方式二:使用完全限定資源定位符URL
假設映射文件路徑為:E:\userInfo-config.xml
則采用url方式如下:(格式為file:///url)
<mapper url="file:///E:/userInfo-config.xml"/>
方式三:使用映射器接口實現類的完全限定名
定義映射接口:
package demo.mybatis.service;
import demo.mybatis.entity.UserInfo;
import org.apache.ibatis.annotations.Select;
public interface UserInfoAnnotation {
@Select("SELECT user_name ,user_addr FROM user_info WHERE user_id=#{user_id}")
public UserInfo getUserInfoById(int user_id);
}
配置映射
<mapper class="demo.mybatis.service.UserInfoAnnotation"/>
方式四:將包內的映射器接口實現全部注冊為映射器
<package name="demo.mybatis.service"/>
Mybatis九大類全局配置節點按照如下順序排序,位置不能顛倒。
properties=>settings=>typeAliases=>typeHandlers=>objectFactory=>plugins=>environment=>databaseIdProvider=>mappers
以上就是動力節點小編介紹的"配置MyBatis文件詳解",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習