mybatis全局配置文件mybatis-config.xml

1.properties屬性

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

  • 在properties元素體內(nèi)定義的屬性首先被讀取·。
  • 然后會(huì)讀取properties元素中國source或url加載的屬性,它會(huì)覆蓋已讀取的同名屬性。
  • 最后讀取parameterType傳遞的屬性,它會(huì)覆蓋已讀取的同名屬性
    建議
    不要在properties元素體內(nèi)添加任何屬性值,只將屬性值定義在properties文件中。
    在properties文件中定義屬性名要有一定的特殊性,如jdbc.username

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/sams?serverTimezone=UTC 
jdbc.username=root
jdbc.password=root

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>
    <properties resource="db.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <!--加載映射文件-->
    <mappers>
        <mapper resource="mapper/adminMap.xml"></mapper>
        <mapper resource="mapper/mapper.xml"></mapper>
    </mappers>
</configuration>
2.settings全局參數(shù)配置

mabatis框架運(yùn)行時(shí)可以調(diào)整一些運(yùn)行參數(shù)

[引用]
<!-- settings是 MyBatis 中極為重要的調(diào)整設(shè)置,它們會(huì)改變 MyBatis 的運(yùn)行時(shí)行為。 -->
    <settings>
        <!-- 該配置影響的所有映射器中配置的緩存的全局開關(guān)。默認(rèn)值true -->
      <setting name="cacheEnabled" value="true"/>
      <!--延遲加載的全局開關(guān)。當(dāng)開啟時(shí),所有關(guān)聯(lián)對(duì)象都會(huì)延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過設(shè)置fetchType屬性來覆蓋該項(xiàng)的開關(guān)狀態(tài)。默認(rèn)值false  -->
      <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 是否允許單一語句返回多結(jié)果集(需要兼容驅(qū)動(dòng))。 默認(rèn)值true -->
      <setting name="multipleResultSetsEnabled" value="true"/>
      <!-- 使用列標(biāo)簽代替列名。不同的驅(qū)動(dòng)在這方面會(huì)有不同的表現(xiàn), 具體可參考相關(guān)驅(qū)動(dòng)文檔或通過測試這兩種不同的模式來觀察所用驅(qū)動(dòng)的結(jié)果。默認(rèn)值true -->
      <setting name="useColumnLabel" value="true"/>
      <!-- 允許 JDBC 支持自動(dòng)生成主鍵,需要驅(qū)動(dòng)兼容。 如果設(shè)置為 true 則這個(gè)設(shè)置強(qiáng)制使用自動(dòng)生成主鍵,盡管一些驅(qū)動(dòng)不能兼容但仍可正常工作(比如 Derby)。 默認(rèn)值false  -->
      <setting name="useGeneratedKeys" value="false"/>
     <!--  指定 MyBatis 應(yīng)如何自動(dòng)映射列到字段或?qū)傩浴?NONE 表示取消自動(dòng)映射;PARTIAL 只會(huì)自動(dòng)映射沒有定義嵌套結(jié)果集映射的結(jié)果集。 FULL 會(huì)自動(dòng)映射任意復(fù)雜的結(jié)果集(無論是否嵌套)。 --> 
     <!-- 默認(rèn)值PARTIAL -->
      <setting name="autoMappingBehavior" value="PARTIAL"/>
      
      <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
     <!--  配置默認(rèn)的執(zhí)行器。SIMPLE 就是普通的執(zhí)行器;REUSE 執(zhí)行器會(huì)重用預(yù)處理語句(prepared statements); BATCH 執(zhí)行器將重用語句并執(zhí)行批量更新。默認(rèn)SIMPLE  -->
      <setting name="defaultExecutorType" value="SIMPLE"/>
      <!-- 設(shè)置超時(shí)時(shí)間,它決定驅(qū)動(dòng)等待數(shù)據(jù)庫響應(yīng)的秒數(shù)。 -->
      <setting name="defaultStatementTimeout" value="25"/>
      
        <setting name="defaultFetchSize" value="100"/>
      <!-- 允許在嵌套語句中使用分頁(RowBounds)默認(rèn)值False -->
      <setting name="safeRowBoundsEnabled" value="false"/>
      <!-- 是否開啟自動(dòng)駝峰命名規(guī)則(camel case)映射,即從經(jīng)典數(shù)據(jù)庫列名 A_COLUMN 到經(jīng)典 Java 屬性名 aColumn 的類似映射。  默認(rèn)false -->
      <setting name="mapUnderscoreToCamelCase" value="false"/>
      <!-- MyBatis 利用本地緩存機(jī)制(Local Cache)防止循環(huán)引用(circular references)和加速重復(fù)嵌套查詢。
             默認(rèn)值為 SESSION,這種情況下會(huì)緩存一個(gè)會(huì)話中執(zhí)行的所有查詢。
            若設(shè)置值為 STATEMENT,本地會(huì)話僅用在語句執(zhí)行上,對(duì)相同 SqlSession 的不同調(diào)用將不會(huì)共享數(shù)據(jù)。  -->
      <setting name="localCacheScope" value="SESSION"/>
      <!-- 當(dāng)沒有為參數(shù)提供特定的 JDBC 類型時(shí),為空值指定 JDBC 類型。 某些驅(qū)動(dòng)需要指定列的 JDBC 類型,多數(shù)情況直接用一般類型即可,比如 NULL、VARCHAR 或 OTHER。  -->
      <setting name="jdbcTypeForNull" value="OTHER"/>
    <!--   指定哪個(gè)對(duì)象的方法觸發(fā)一次延遲加載。  -->
      <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>
3.typeAliases(別名)重點(diǎn)

單個(gè)別名定義
指定報(bào)名,mybatis自動(dòng)掃描包中的類,自動(dòng)定義別名,別名就是類名(首字母大小寫不限制

<typeAliases >
    <typeAlias type="cn.huan.mybatis.AdminBean" alias="AdminBean"></typeAlias>
</typeAliases>

批量別名定義

<typeAliases >
        <package name="cn.huan"></package>
    </typeAliases>

引用:

 <select id="findUserById" parameterType="int" resultType="AdminBean">
        SELECT * FROM admin WHERE a_id =#{a_id}
 </select>
4.typeHandlers(類型處理器)

mybatis中通過typeHandkers完成jdbc類型和java類型的轉(zhuǎn)換
通常情況下,mybatis提供的類型處理器滿足日常需要。不需要自定義

5.mappers映射配置

通過resource加載單個(gè)映射文件

<mappers>
        <mapper resource="mapper/adminMap.xml"></mapper>
        <mapper resource="mapper/mapper.xml"></mapper>
</mappers>

通過url加載

<mappers>
        <mapper url="E:\IDEA\Spring_maven\src\main\resources\mapper\adminMap.xml"></mapper>
    
</mappers>

通過mapper接口加載(單個(gè)加載)
(需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個(gè)目錄)

<mappers>
        <mapper class="cn.mapper.AdminMapper"></mapper>
    </mappers>

通過mapper接口加載(批量加載)
(需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個(gè)目錄)

    <!--加載映射文件-->
    <mappers>
        <package name="cn.huan"></package>
    </mappers>

上一篇:mybatis開發(fā)dao的方法(原始dao開發(fā)+mapper代理開發(fā))

文集:mybatis框架學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,633評(píng)論 0 4
  • Java數(shù)據(jù)持久化之mybatis 一. mybatis簡介 1.1 原始的JDBC操作: Java 通過 Jav...
    小Q逛逛閱讀 4,963評(píng)論 0 16
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,949評(píng)論 18 139
  • MyBatis配置xml層次結(jié)構(gòu),而且必須注意其順序。 MyBatis官網(wǎng)中文XML映射配置文件 1.proper...
    落葉飛逝的戀閱讀 2,361評(píng)論 0 4
  • 五一假期第一天突然想學(xué)點(diǎn)新東西,于是把Python重新?lián)炱饋怼0凑誄rossin的編程教室中的《Python入門教...
    葉_XIN閱讀 1,672評(píng)論 0 0