1. 程式人生 > >MyBatis(2)-全域性配置檔案

MyBatis(2)-全域性配置檔案

1)配置檔案的安裝 --->未聯網:去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 此處不在做詳細的測試,可以參考相關的文件。  /------------------------------------------------------------分割線------------------------------------------------------------/ 2.3)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>

本次博文到此結束,謝謝您的瀏覽,如果問題,請提出,博主及時修改。