大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 配置MyBatis文件詳解

配置MyBatis文件詳解

更新時間:2021-06-21 12:04:02 來源:動力節點 瀏覽1044次

1.Mybatis九大類全局配置節點

(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"/>

2.Mybatis九大類全局配置節點順序

Mybatis九大類全局配置節點按照如下順序排序,位置不能顛倒。

properties=>settings=>typeAliases=>typeHandlers=>objectFactory=>plugins=>environment=>databaseIdProvider=>mappers

以上就是動力節點小編介紹的"配置MyBatis文件詳解",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 天堂成人一区二区三区 | 天天操丝袜 | 456性欧美欧美在线视频 | 毛片1| 一线毛片 | 乱子伦有声小说mp3 仑乱高清在线一级播放 | 在线播放人成午夜免费视频 | 欧洲在线免费视频 | 高清一级毛片免免费看 | 九九精品影院 | 秒播影视 午夜福利毛片 | 乱人伦精品一区二区 | 久久色伊人 | 久久爱.www| 亚洲成人网在线观看 | 成年女人aaaaa毛片 | xxxx性xx另类 | 成人影院wwwwwwwwwww | 久久精品女人毛片国产 | 九九99热 | www.97色| 免费国产成人高清在线观看麻豆 | 欧美精品一区二区三区在线播放 | 色九月| 成人性生活免费看 | jizzjizz女人中国 | 日日免费视频 | 一及毛片 | 日日夜夜人人 | 一本本久综合久久爱 | 五月天色婷婷在线 | 国产91av视频| 欧美一级久久 | 美女在线视频观看影院免费天天看 | 欧美 日韩 国产 在线 | 国产午夜精品久久久久免费视 | 欧美aa一级 | 一道本不卡免费视频 | 九九99re在线视频精品免费 | 亚洲精品啪啪一区二区三区 | 毛片视屏 |