欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis別名和settings設(shè)置方式

 更新時(shí)間:2021年07月14日 12:05:10   作者:瞭望塔  
這篇文章主要介紹了MyBatis別名和settings設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MyBatis別名和settings設(shè)置

別名(typeAliases)是一個(gè)指代的名稱,在類的限定名過長時(shí)可以指定別名來簡化使用,MyBatis里分為系統(tǒng)定義別名和自定義別名兩種,系統(tǒng)定義別名是不需要我們再去指定的,通過TypeAliasRegistry類注冊。

MyBatis中別名不區(qū)分大小寫,一個(gè)typeAliases的實(shí)例是在解析配置文件時(shí)生成的,然后長期保存在Configuration對象中。

接下來配置別名:

1、在MyBatis Spring配置文件中引入配置

指定configLocation屬性,即可在對應(yīng)的xml文件中進(jìn)行配置,如下所示:

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自動掃描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com.fc.mapper/*-sqlmap.xml"/>
        <!-- 配置 -->
        <property name="configLocation" value="classpath:sqlmap-alias.xml"/>
    </bean>

2、sqlmap-alias.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>
    <!-- 開啟駝峰規(guī)則與下劃線間的映射關(guān)系 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
 
    <!-- 別名 -->
    <typeAliases>
        <typeAlias alias="USER" type="com.fc.bean.User" />
    </typeAliases> 
</configuration>

在<typeAliases>標(biāo)簽下即可指定對應(yīng)bean的別名,多個(gè)類的別名添加多個(gè)<typeAlias>標(biāo)簽即可。

<settings>是MyBatis最復(fù)雜的配置也是最重要的配置之一,不過不配置也可以正常工作,因?yàn)镸yBatis已經(jīng)提供了默認(rèn)的配置,

如需要進(jìn)行設(shè)置的自定義改動可以在配置中添加<settings>標(biāo)簽,如上例所示(注意configuration中的設(shè)置是有序的,如上述的settings和typeAliases標(biāo)簽交換順序,會有錯(cuò)誤提示)

具體的屬性可以參考Configuration類,在配置文件中可以通過<setting>標(biāo)簽更改默認(rèn)屬性值,mapUnderscoreToCamelCase是

開啟camel case(自動駝峰命名規(guī)則)映射,使用示例:

<select id="queryUser" parameterType="java.util.Map" resultType="USER">
        SELECT
          id,
          real_name,
          sex sex,
          age age,
          login_name,
          login_password,
          create_time,
          update_time
        from temp_user
        <trim prefix="where" prefixOverrides="and">
            <if test="realName != null and realName != '' ">
                and real_name = #{realName}
            </if>
            <if test="loginName != null and loginName != '' ">
                and login_name = #{loginName}
            </if>
        </trim>
    </select>

3、相對完整的setting設(shè)置和說明如下:

<!-- settings設(shè)置 -->
    <settings>
        <!-- 映射器緩存全局開關(guān),默認(rèn)true -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 延遲加載的全局開關(guān),默認(rèn)false -->
        <setting name="lazyLoadingEnabled" value="false"/>
        <!-- 是帶有延遲加載屬性的對象完整加載,默認(rèn)true -->
        <setting name="aggressiveLazyLoading" value="true"/>
        <!-- 是否允許單一語句返回多結(jié)果集,默認(rèn)true -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 列標(biāo)簽代替列名,默認(rèn)true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 允許jdbc支持自動生成主鍵,默認(rèn)false -->
        <setting name="useGeneratedKeys" value="false"/>
        <!-- 指定 MyBatis 應(yīng)如何自動映射列到字段或?qū)傩浴?
            NONE 表示取消自動映射;PARTIAL 只會自動映射沒有定義嵌套結(jié)果集映射的結(jié)果集。
            FULL 會自動映射任意復(fù)雜的結(jié)果集(無論是否嵌套) -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 指定發(fā)現(xiàn)自動映射目標(biāo)未知列的行為,默認(rèn)NONE -->
        <setting name="autoMappingUnknownColumnBehavior" value="NONE"/>
        <!-- 指定默認(rèn)執(zhí)行器,SIMPLE/REUSE/BATCH -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 設(shè)置超時(shí)時(shí)間,默認(rèn)不設(shè)置 -->
        <setting name="defaultStatementTimeout" value="3000"/>
        <!-- 為驅(qū)動的結(jié)果集獲取數(shù)量(fetchSize)設(shè)置一個(gè)提示值,默認(rèn)不設(shè)置 -->
        <setting name="defaultFetchSize" value="1000"/>
        <!-- 嵌套語句中采用分頁,默認(rèn)false表示開啟 -->
        <setting name="safeRowBoundsEnabled" value="false"/>
        <!-- 駝峰規(guī)則,默認(rèn)false -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <!-- 會話開啟本地緩存查詢機(jī)制,其它值STATEMENT用于語句執(zhí)行上 -->
        <setting name="localCacheScope" value="SESSION"/>
        <!-- 沒有為參數(shù)指定jdbc類型時(shí),為空值指定jdbc類型 -->
        <setting name="jdbcTypeForNull" value="OTHER"/>
        <!-- 指定對象的方法觸發(fā)一次延遲加載 -->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
        <!-- 指定動態(tài)SQL生成的默認(rèn)語言 -->
        <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
        <!-- 指定當(dāng)結(jié)果集中值為null的時(shí)候是否調(diào)用映射對象的setter(map 對象時(shí)為 put) -->
        <setting name="callSettersOnNulls" value="false"/>
        <!-- 指定mybatis增加到日志名稱的前綴,默認(rèn)不設(shè)置 -->
        <setting name="logPrefix" value="xxx_"/>
        <!-- 指定Mybatis創(chuàng)建具有延遲加載能力的對象所用到的代理工具,3.3或以上JAVASSIST -->
        <setting name="proxyFactory" value="CGLIB"/>
    </settings>

MyBatis setting的用法和解釋

setting 用法

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

具體解釋

  • 源自官方文檔搬運(yùn),如有誤請指正。謝謝!
  • 為了提高閱讀性,所以分為了4個(gè)表格。
設(shè)置名 描述 有效 默認(rèn)值
cacheEnabled 全局性地開啟或關(guān)閉所有映射器配置文件中已配置的任何緩存。 true / false true
lazyLoadingEnabled 延遲加載的全局開關(guān)。當(dāng)開啟時(shí),所有關(guān)聯(lián)對象都會延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過設(shè)置 fetchType 屬性來覆蓋該項(xiàng)的開關(guān)狀態(tài)。 true / false true
aggressiveLazyLoading 開啟時(shí),任一方法的調(diào)用都會加載該對象的所有延遲加載屬性。 否則,每個(gè)延遲加載屬性會按需加載(參考 lazyLoadTriggerMethods)。 true / false false false (在 3.4.1 及之前的版本中默認(rèn)為 true)
multipleResultSetsEnabled 是否允許單個(gè)語句返回多結(jié)果集(需要數(shù)據(jù)庫驅(qū)動支持)。 true / false true
useColumnLabel 使用列標(biāo)簽代替列名。實(shí)際表現(xiàn)依賴于數(shù)據(jù)庫驅(qū)動,具體可參考數(shù)據(jù)庫驅(qū)動的相關(guān)文檔,或通過對比測試來觀察。 true / false true
useGeneratedKeys 允許 JDBC 支持自動生成主鍵,需要數(shù)據(jù)庫驅(qū)動支持。如果設(shè)置為 true,將強(qiáng)制使用自動生成主鍵。盡管一些數(shù)據(jù)庫驅(qū)動不支持此特性,但仍可正常工作(如 Derby)。 true / false false
autoMappingBehavior 指定 MyBatis 應(yīng)如何自動映射列到字段或?qū)傩浴?NONE 表示關(guān)閉自動映射;PARTIAL 只會自動映射沒有定義嵌套結(jié)果映射的字段。 FULL 會自動映射任何復(fù)雜的結(jié)果集(無論是否嵌套)。 NONE, PARTIAL, FULL PARTIAL
autoMappingUnknownColumnBehavior 指定發(fā)現(xiàn)自動映射目標(biāo)未知列(或未知屬性類型)的行為。NONE: 不做任何反應(yīng)。WARNING: 輸出警告日志(‘org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等級必須設(shè)置為 WARN)。 FAILING: 映射失敗 (拋出 SqlSessionException) NONE, WARNING, FAILING NONE
設(shè)置名 描述 有效 默認(rèn)值
defaultExecutorType 配置默認(rèn)的執(zhí)行器。SIMPLE 就是普通的執(zhí)行器;REUSE 執(zhí)行器會重用預(yù)處理語句(PreparedStatement); BATCH 執(zhí)行器不僅重用語句還會執(zhí)行批量更新。 SIMPLE REUSE BATCH SIMPLE
defaultStatementTimeout 設(shè)置超時(shí)時(shí)間,它決定數(shù)據(jù)庫驅(qū)動等待數(shù)據(jù)庫響應(yīng)的秒數(shù)。 任意正整數(shù) 未設(shè)置 (null)
defaultFetchSize 為驅(qū)動的結(jié)果集獲取數(shù)量(fetchSize)設(shè)置一個(gè)建議值。此參數(shù)只可以在查詢設(shè)置中被覆蓋。 任意正整數(shù) 未設(shè)置 (null)
defaultResultSetType 指定語句默認(rèn)的滾動策略。(新增于 3.5.2) FORWARD_ONLY / SCROLL_SENSITIVE / SCROLL_INSENSITIVE / DEFAULT(等同于未設(shè)置) 未設(shè)置 (null)
safeRowBoundsEnabled 是否允許在嵌套語句中使用分頁(RowBounds)。如果允許使用則設(shè)置為 false。 true / false False
safeResultHandlerEnabled 是否允許在嵌套語句中使用結(jié)果處理器(ResultHandler)。如果允許使用則設(shè)置為 false。 true / false True
mapUnderscoreToCamelCase 是否開啟駝峰命名自動映射,即從經(jīng)典數(shù)據(jù)庫列名 A_COLUMN 映射到經(jīng)典 Java 屬性名 aColumn。 true / false false
localCacheScope MyBatis 利用本地緩存機(jī)制(Local Cache)防止循環(huán)引用和加速重復(fù)的嵌套查詢。 默認(rèn)值為 SESSION,會緩存一個(gè)會話中執(zhí)行的所有查詢。 若設(shè)置值為 STATEMENT,本地緩存將僅用于執(zhí)行語句,對相同 SqlSession 的不同查詢將不會進(jìn)行緩存。 SESSION /STATEMENT SESSION
jdbcTypeForNull 當(dāng)沒有為參數(shù)指定特定的 JDBC 類型時(shí),空值的默認(rèn) JDBC 類型。 某些數(shù)據(jù)庫驅(qū)動需要指定列的 JDBC 類型,多數(shù)情況直接用一般類型即可,比如 NULL、VARCHAR 或 OTHER。 JdbcType 常量,常用值:NULL、VARCHAR 或 OTHER。 OTHER
設(shè)置名 描述 有效 默認(rèn)值
lazyLoadTriggerMethods 指定對象的哪些方法觸發(fā)一次延遲加載。 用逗號分隔的方法列表 equals,clone,hashCode,toString
defaultScriptingLanguage 指定動態(tài) SQL 生成使用的默認(rèn)腳本語言。 一個(gè)類型別名或全限定類名 org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler 指定 Enum 使用的默認(rèn) TypeHandler 。(新增于 3.4.5) 一個(gè)類型別名或全限定類名。 org.apache.ibatis.type.EnumTypeHandler
設(shè)置名 描述 有效 默認(rèn)值
callSettersOnNulls 指定當(dāng)結(jié)果集中值為 null 的時(shí)候是否調(diào)用映射對象的 setter(map 對象時(shí)為 put)方法,這在依賴于 Map.keySet() 或 null 值進(jìn)行初始化時(shí)比較有用。注意基本類型(int、boolean 等)是不能設(shè)置成 null 的。 true / false false
returnInstanceForEmptyRow 當(dāng)返回行的所有列都是空時(shí),MyBatis默認(rèn)返回 null。 當(dāng)開啟這個(gè)設(shè)置時(shí),MyBatis會返回一個(gè)空實(shí)例。 請注意,它也適用于嵌套的結(jié)果集(如集合或關(guān)聯(lián))。(新增于 3.4.2) true / false false
logPrefix 指定 MyBatis 增加到日志名稱的前綴。 任何字符串 未設(shè)置
logImpl 指定 MyBatis 所用日志的具體實(shí)現(xiàn),未指定時(shí)將自動查找。 SLF4J /LOG4J/ LOG4J2/JDK_LOGGING/COMMONS_LOGGING /STDOUT_LOGGING/NO_LOGGING 未設(shè)置
proxyFactory 指定 Mybatis 創(chuàng)建可延遲加載對象所用到的代理工具。 CGLIB JAVASSIST
vfsImpl 指定 VFS 的實(shí)現(xiàn) 自定義 VFS 的實(shí)現(xiàn)的類全限定名,以逗號分隔。 未設(shè)置
useActualParamName 允許使用方法簽名中的名稱作為語句參數(shù)名稱。 為了使用該特性,你的項(xiàng)目必須采用 Java 8 編譯,并且加上 -parameters 選項(xiàng)。(新增于 3.4.1) true / false true
configurationFactory 指定一個(gè)提供 Configuration 實(shí)例的類。 這個(gè)被返回的 Configuration 實(shí)例用來加載被反序列化對象的延遲加載屬性值。 這個(gè)類必須包含一個(gè)簽名為static Configuration getConfiguration() 的方法。(新增于 3.2.3) 一個(gè)類型別名或完全限定類名。 未設(shè)置
shrinkWhitespacesInSql Removes extra whitespace characters from the SQL. Note that this also affects literal strings in SQL. (Since 3.5.5) true / false false

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Springboot使用logback的注意事項(xiàng)

    基于Springboot使用logback的注意事項(xiàng)

    這篇文章主要介紹了Springboot使用logback的注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題

    詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題

    本篇文章主要介紹了詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題。具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • 解決springmvc整合Mybatis的Log4j日志輸出問題

    解決springmvc整合Mybatis的Log4j日志輸出問題

    這篇文章主要介紹了解決springmvc整合Mybatis的Log4j日志輸出問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot實(shí)現(xiàn)異步調(diào)用@Async的示例

    springboot實(shí)現(xiàn)異步調(diào)用@Async的示例

    這篇文章主要介紹了springboot實(shí)現(xiàn)異步調(diào)用@Async的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 圖解Java經(jīng)典算法冒泡排序的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法冒泡排序的原理與實(shí)現(xiàn)

    冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對相鄰的元素,當(dāng)該對元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序
    2022-09-09
  • Java中使用opencsv讀寫csv文件示例

    Java中使用opencsv讀寫csv文件示例

    這篇文章主要介紹了Java中使用opencsv讀寫csv文件示例,本文給出了讀CSV文件、寫CSV文件、自定義分隔符、生成Javabeans等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Java中使用MinIO的常用操作示例

    Java中使用MinIO的常用操作示例

    這篇文章主要介紹了Java中MinIO的常用操作示例,MinIO 是一款基于Go語言發(fā)開的高性能、分布式的對象存儲系統(tǒng),客戶端支持Java,Net,Python,Javacript, Golang語言,需要的朋友可以參考下
    2024-01-01
  • SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能

    SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能

    郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,本文給大家介紹了可以實(shí)現(xiàn)一個(gè)簡單的郵件發(fā)送功能的實(shí)例,文中通過代碼給大家介紹的非常詳細(xì),感興趣的朋友可以參考下
    2023-12-12
  • Redis中的事務(wù)和Redis樂觀鎖詳解

    Redis中的事務(wù)和Redis樂觀鎖詳解

    這篇文章主要介紹了Redis中的事務(wù)和Redis樂觀鎖詳解,Redis事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行,事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷,需要的朋友可以參考下
    2023-12-12
  • java實(shí)現(xiàn)RedisTemplate操作哈希數(shù)據(jù)

    java實(shí)現(xiàn)RedisTemplate操作哈希數(shù)據(jù)

    RedisTemplate是Spring Data Redis提供的一個(gè)用于操作Redis的模板類,本文主要介紹了java實(shí)現(xiàn)RedisTemplate操作哈希數(shù)據(jù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09

最新評論