亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis別名和settings設置方式

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

MyBatis別名和settings設置

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

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

接下來配置別名:

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

指定configLocation屬性,即可在對應的xml文件中進行配置,如下所示:

    <!-- 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ī)則與下劃線間的映射關系 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
 
    <!-- 別名 -->
    <typeAliases>
        <typeAlias alias="USER" type="com.fc.bean.User" />
    </typeAliases> 
</configuration>

在<typeAliases>標簽下即可指定對應bean的別名,多個類的別名添加多個<typeAlias>標簽即可。

<settings>是MyBatis最復雜的配置也是最重要的配置之一,不過不配置也可以正常工作,因為MyBatis已經提供了默認的配置,

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

具體的屬性可以參考Configuration類,在配置文件中可以通過<setting>標簽更改默認屬性值,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設置和說明如下:

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

MyBatis setting的用法和解釋

setting 用法

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

具體解釋

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 基于Springboot使用logback的注意事項

    基于Springboot使用logback的注意事項

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Redis中的事務和Redis樂觀鎖詳解

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

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

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

最新評論