1. 程式人生 > >mybatis學習教程(四)全域性設定簡略mybatis-config.xml

mybatis學習教程(四)全域性設定簡略mybatis-config.xml

1、前言

本文簡略講解一下properties的檔案定義,與全域性變數的定義,以及別名的定義。

2、propertiese檔案定位

 可以把一些通用的屬性值配置在屬性檔案中,載入到mybatis執行環境內。

比如:建立db.properties配置資料庫連線引數。

sqlconfig的修改

<pre name="code" class="html"><!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--配置屬性值,可以在屬性檔案內編寫屬性值,也可以在properties標籤裡面寫屬性值-->
    <properties resource="config/db.properties">
      <!--  <property name="" value=""></property>-->
    </properties>
    <!--與spring整個後環境配置將廢除-->
    <environments default="development">
        <environment id="development">
            <!--使用JDBC事務管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--資料庫連線池-->
            <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>
    <!--載入mapper-->
    <mappers>
        <mapper  resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>



db.properties檔案
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertTonull
jdbc.username=root
jdbc.password=123456
2.1注意properties檔案的一些定義

MyBatis 將按照下面的順序來載入屬性:

1】在 properties 元素體內定義的屬性首先被讀取。 

2】然後會讀取properties 

元素中resource或 url 載入的屬性,它會覆蓋已讀取的同名屬性。 

3】最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

建議使用properties,不要在properties中定義屬性,只引用定義的properties檔案中屬性,並且properties檔案中定義的key要有一些特殊的規則。

3、mybatis全域性屬性設定

Setting(設定) Description(描述) Valid Values(驗證值組) Default(預設值)
cacheEnabled 在全域性範圍內啟用或禁用快取配置任何對映器在此配置下。 true | false TRUE
lazyLoadingEnabled 在全域性範圍內啟用或禁用延遲載入。禁用時,所有協會將熱載入。 true | false TRUE
aggressiveLazyLoading 啟用時,有延遲載入屬性的物件將被完全載入後呼叫懶惰的任何屬性。否則,每一個屬性是按需載入。 true | false TRUE
multipleResultSetsEnabled 允許或不允許從一個單獨的語句(需要相容的驅動程式)要返回多個結果集。 true | false TRUE
useColumnLabel 使用列標籤,而不是列名。在這方面,不同的驅動有不同的行為。參考驅動文件或測試兩種方法來決定你的驅動程式的行為如何。 true | false TRUE
useGeneratedKeys 允許JDBC支援生成的金鑰。相容的驅動程式是必需的。此設定強制生成的鍵被使用,如果設定為true,一些驅動會不相容性,但仍然可以工作。 true | false FALSE
autoMappingBehavior 指定MyBatis的應如何自動對映列到欄位/屬性。NONE自動對映。 PARTIAL只會自動對映結果沒有巢狀結果對映定義裡面。 FULL會自動對映的結果對映任何複雜的(包含巢狀或其他)。 NONE, PARTIAL, FULL PARTIAL
defaultExecutorType 配置預設執行人。SIMPLE執行人確實沒有什麼特別的。 REUSE執行器重用準備好的語句。 BATCH執行器重用語句和批處理更新。 SIMPLE REUSE BATCH SIMPLE
defaultStatementTimeout 設定驅動程式等待一個數據庫響應的秒數。 Any positive integer Not Set (null)
safeRowBoundsEnabled 允許使用巢狀的語句RowBounds true | false FALSE
mapUnderscoreToCamelCase 從經典的資料庫列名A_COLUMN啟用自動對映到駱駝標識的經典的Java屬性名aColumn true | false FALSE
localCacheScope MyBatis的使用本地快取,以防止迴圈引用,並加快反覆巢狀查詢。預設情況下(SESSION)會話期間執行的所有查詢快取。如果localCacheScope=STATMENT本地會話將被用於語句的執行,只是沒有將資料共享之間的兩個不同的呼叫相同的SqlSession SESSION | STATEMENT SESSION
dbcTypeForNull 指定為空值時,沒有特定的JDBC型別的引數的JDBC型別。有些驅動需要指定列的JDBC型別,但其他像NULLVARCHAROTHER的工作與通用值。 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHER
lazyLoadTriggerMethods 指定觸發延遲載入的物件的方法。 A method name list separated by commas equals,clone,hashCode,toString
defaultScriptingLanguage 指定所使用的語言預設為動態SQL生成。 A type alias or fully qualified class name. org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver
callSettersOnNulls 指定如果setter方法​​或地圖的put方法時,將呼叫檢索到的值是null。它是有用的,當你依靠Map.keySet()或null初始化。注意原語(如整型,布林等)不會被設定為null true | false FALSE
logPrefix 指定的字首字串,MyBatis將會增加記錄器的名稱。 Any String Not set
logImpl 指定MyBatis的日誌實現使用。如果此設定是不存在的記錄的實施將自動查詢。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING Not set
proxyFactory 指定代理工具,MyBatis將會使用建立懶載入能力的物件。 CGLIB | JAVASSIST

4、別名的定義

4.1mybatis本身別名定義

別名

對映的型別

_byte 

byte 

_long 

long 

_short 

short 

_int 

int 

_integer 

int 

_double 

double 

_float 

float 

_boolean 

boolean 

string 

String 

byte 

Byte 

long 

Long 

short 

Short 

int 

Integer 

integer 

Integer 

double 

Double 

float 

Float 

boolean 

Boolean 

date 

Date 

decimal 

BigDecimal 

bigdecimal 

BigDecimal 

4.2自定義別名
typeAliases別名
sqlconfig定義檔案如下:
package 可以使用多個
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--配置屬性值,可以在屬性檔案內編寫屬性值,也可以在properties標籤裡面寫屬性值-->
    <properties resource="config/db.properties">
      <!--  <property name="" value=""></property>-->
    </properties>
    <typeAliases>
        <!--別名定義1:指定單個路徑定義別名(不常用)-->
      <!--  <typeAlias type="com.ycy.mybatis.module.User" alias="User"/>-->
        <!--別名定義2:指定包路徑,預設為類的名字(首字母大小寫都可以,建議大寫)-->
        <package name="com.ycy.mybatis.module" />
    </typeAliases>

    <!--與spring整個後環境配置將廢除-->
    <environments default="development">
        <environment id="development">
            <!--使用JDBC事務管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--資料庫連線池-->
            <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>
    <!--載入mapper-->
    <mappers>
        <mapper  resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

5、mapper配置

3種方式只選擇一種,注意由於我用的idea,親測只能用第一種方法,就是resource方式,不要問我為什麼,任性。 提示:但是以後用spring了,有一個spring掃描。
  <!--載入mapper-->
    <mappers>
        <!--如果和spring整合,可以使用整合包的 mapper掃描器,此處mapper配置不需要;-->
        <!--1:通過resource路徑匯入xml對映(idea必須在resource檔案下面)-->
        <mapper  resource="mapper/UserMapper.xml"/>
        <!--2:通過class路徑匯入對映,注意:此時class檔案必須與想xml檔案在一個目錄下,同名-->
        <mapper class="com.ycy.mybatis.dao.UserMapper" />
        <!--3:通過批量匯入package,自動掃描包下面mapper介面 注意:此時class檔案必須與想xml檔案在一個目錄下,同名-->
        <package name="com.ycy.mybatis.dao"/>
    </mappers>
如有疑問:qq群:78275755(目前木有人,來啦更好)
本專案1-5章 初級教程 專案百度分享盤: http://pan.baidu.com/s/1o63SUaI