最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

MyBatis別名和settings設(shè)置

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

MyBatis中別名不區(qū)分大小寫,一個typeAliases的實例是在解析配置文件時生成的,然后長期保存在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的別名,多個類的別名添加多個<typeAlias>標(biāo)簽即可。

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

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

具體的屬性可以參考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è)置超時時間,默認(rèn)不設(shè)置 -->
        <setting name="defaultStatementTimeout" value="3000"/>
        <!-- 為驅(qū)動的結(jié)果集獲取數(shù)量(fetchSize)設(shè)置一個提示值,默認(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"/>
        <!-- 會話開啟本地緩存查詢機制,其它值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生成的默認(rèn)語言 -->
        <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
        <!-- 指定當(dāng)結(jié)果集中值為null的時候是否調(diào)用映射對象的setter(map 對象時為 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 的運行時行為。 -->  
    <settings>  
        <!-- 該配置影響的所有映射器中配置的緩存的全局開關(guān)。默認(rèn)值true -->  
      <setting name="cacheEnabled" value="true"/>  
      <!--延遲加載的全局開關(guān)。當(dāng)開啟時,所有關(guān)聯(lián)對象都會延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過設(shè)置fetchType屬性來覆蓋該項的開關(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 則這個設(shè)置強制使用自動生成主鍵,盡管一些驅(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è)置超時時間,它決定驅(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 利用本地緩存機制(Local Cache)防止循環(huán)引用(circular references)和加速重復(fù)嵌套查詢。  
             默認(rèn)值為 SESSION,這種情況下會緩存一個會話中執(zhí)行的所有查詢。  
            若設(shè)置值為 STATEMENT,本地會話僅用在語句執(zhí)行上,對相同 SqlSession 的不同調(diào)用將不會共享數(shù)據(jù)。  -->  
      <setting name="localCacheScope" value="SESSION"/>  
      <!-- 當(dāng)沒有為參數(shù)提供特定的 JDBC 類型時,為空值指定 JDBC 類型。 某些驅(qū)動需要指定列的 JDBC 類型,多數(shù)情況直接用一般類型即可,比如 NULL、VARCHAR 或 OTHER。  -->  
      <setting name="jdbcTypeForNull" value="OTHER"/>  
    <!--   指定哪個對象的方法觸發(fā)一次延遲加載。  -->  
      <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>  
    </settings>  

具體解釋

  • 源自官方文檔搬運,如有誤請指正。謝謝!
  • 為了提高閱讀性,所以分為了4個表格。
設(shè)置名 描述 有效 默認(rèn)值
cacheEnabled 全局性地開啟或關(guān)閉所有映射器配置文件中已配置的任何緩存。 true / false true
lazyLoadingEnabled 延遲加載的全局開關(guān)。當(dāng)開啟時,所有關(guān)聯(lián)對象都會延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過設(shè)置 fetchType 屬性來覆蓋該項的開關(guān)狀態(tài)。 true / false true
aggressiveLazyLoading 開啟時,任一方法的調(diào)用都會加載該對象的所有延遲加載屬性。 否則,每個延遲加載屬性會按需加載(參考 lazyLoadTriggerMethods)。 true / false false false (在 3.4.1 及之前的版本中默認(rèn)為 true)
multipleResultSetsEnabled 是否允許單個語句返回多結(jié)果集(需要數(shù)據(jù)庫驅(qū)動支持)。 true / false true
useColumnLabel 使用列標(biāo)簽代替列名。實際表現(xiàn)依賴于數(shù)據(jù)庫驅(qū)動,具體可參考數(shù)據(jù)庫驅(qū)動的相關(guān)文檔,或通過對比測試來觀察。 true / false true
useGeneratedKeys 允許 JDBC 支持自動生成主鍵,需要數(shù)據(jù)庫驅(qū)動支持。如果設(shè)置為 true,將強制使用自動生成主鍵。盡管一些數(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ù)據(jù)庫驅(qū)動等待數(shù)據(jù)庫響應(yīng)的秒數(shù)。 任意正整數(shù) 未設(shè)置 (null)
defaultFetchSize 為驅(qū)動的結(jié)果集獲取數(shù)量(fetchSize)設(shè)置一個建議值。此參數(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 利用本地緩存機制(Local Cache)防止循環(huán)引用和加速重復(fù)的嵌套查詢。 默認(rèn)值為 SESSION,會緩存一個會話中執(zhí)行的所有查詢。 若設(shè)置值為 STATEMENT,本地緩存將僅用于執(zhí)行語句,對相同 SqlSession 的不同查詢將不會進(jìn)行緩存。 SESSION /STATEMENT SESSION
jdbcTypeForNull 當(dāng)沒有為參數(shù)指定特定的 JDBC 類型時,空值的默認(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)腳本語言。 一個類型別名或全限定類名 org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler 指定 Enum 使用的默認(rèn) TypeHandler 。(新增于 3.4.5) 一個類型別名或全限定類名。 org.apache.ibatis.type.EnumTypeHandler
設(shè)置名 描述 有效 默認(rèn)值
callSettersOnNulls 指定當(dāng)結(jié)果集中值為 null 的時候是否調(diào)用映射對象的 setter(map 對象時為 put)方法,這在依賴于 Map.keySet() 或 null 值進(jìn)行初始化時比較有用。注意基本類型(int、boolean 等)是不能設(shè)置成 null 的。 true / false false
returnInstanceForEmptyRow 當(dāng)返回行的所有列都是空時,MyBatis默認(rèn)返回 null。 當(dāng)開啟這個設(shè)置時,MyBatis會返回一個空實例。 請注意,它也適用于嵌套的結(jié)果集(如集合或關(guān)聯(lián))。(新增于 3.4.2) true / false false
logPrefix 指定 MyBatis 增加到日志名稱的前綴。 任何字符串 未設(shè)置
logImpl 指定 MyBatis 所用日志的具體實現(xiàn),未指定時將自動查找。 SLF4J /LOG4J/ LOG4J2/JDK_LOGGING/COMMONS_LOGGING /STDOUT_LOGGING/NO_LOGGING 未設(shè)置
proxyFactory 指定 Mybatis 創(chuàng)建可延遲加載對象所用到的代理工具。 CGLIB JAVASSIST
vfsImpl 指定 VFS 的實現(xiàn) 自定義 VFS 的實現(xiàn)的類全限定名,以逗號分隔。 未設(shè)置
useActualParamName 允許使用方法簽名中的名稱作為語句參數(shù)名稱。 為了使用該特性,你的項目必須采用 Java 8 編譯,并且加上 -parameters 選項。(新增于 3.4.1) true / false true
configurationFactory 指定一個提供 Configuration 實例的類。 這個被返回的 Configuration 實例用來加載被反序列化對象的延遲加載屬性值。 這個類必須包含一個簽名為static Configuration getConfiguration() 的方法。(新增于 3.2.3) 一個類型別名或完全限定類名。 未設(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

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

相關(guān)文章

  • 使用Java實現(xiàn)MapReduce詞頻統(tǒng)計示例代碼

    使用Java實現(xiàn)MapReduce詞頻統(tǒng)計示例代碼

    這篇文章主要介紹了使用Java實現(xiàn)MapReduce詞頻統(tǒng)計的相關(guān)資料,通過詞頻統(tǒng)計示例來展示MapReduce的運行機制,涵蓋了Mapper和Reducer的實現(xiàn),并說明了如何配置和執(zhí)行MapReduce作業(yè),需要的朋友可以參考下
    2024-11-11
  • Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8非常重要的就是引入了函數(shù)式編程的思想,使得這門經(jīng)典的面向?qū)ο笳Z言有了函數(shù)式的編程方式,彌補了很大程度上的不足,函數(shù)式思想在處理復(fù)雜問題上有著更為令人稱贊的特性,本文給大家介紹Java8函數(shù)式編程應(yīng)用小結(jié),感興趣的朋友一起看看吧
    2023-12-12
  • springboot多文件或者文件夾壓縮成zip的方法

    springboot多文件或者文件夾壓縮成zip的方法

    最近碰到個需要下載zip壓縮包的需求,于是我在網(wǎng)上找了下別人寫好的zip工具類,下面通過本文給大家分享springboot多文件或者文件夾壓縮成zip的方法,感興趣的朋友一起看看吧
    2024-07-07
  • Java中獲取webapp路徑問題詳解

    Java中獲取webapp路徑問題詳解

    這篇文章主要介紹了Java中獲取webapp路徑問題詳解,WebApp是指基于Web的?系統(tǒng)和?應(yīng)用,其作用是向廣大的最終用戶發(fā)布一組復(fù)雜的內(nèi)容和功能,本文詳解了關(guān)于獲取路徑時候可能出現(xiàn)的問題,需要的朋友可以參考下
    2023-07-07
  • 詳解Elasticsearch如何把一個索引變?yōu)橹蛔x

    詳解Elasticsearch如何把一個索引變?yōu)橹蛔x

    這篇文章主要為大家介紹了詳解Elasticsearch如何把一個索引變?yōu)橹蛔x示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • springboot 獲取訪問接口的請求的IP地址的實現(xiàn)

    springboot 獲取訪問接口的請求的IP地址的實現(xiàn)

    本文主要介紹了springboot獲取訪問接口的請求的IP地址的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MyBatis-Flex 邏輯刪除的用法小結(jié)

    MyBatis-Flex 邏輯刪除的用法小結(jié)

    本文主要介紹了MyBatis-Flex 邏輯刪除的用法小結(jié),主要介紹了@Column注解使用及UpdateChain工具類介紹,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • 帶你快速搞定java多線程(5)

    帶你快速搞定java多線程(5)

    這篇文章主要介紹了java多線程編程實例,分享了幾則多線程的實例代碼,具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-07-07
  • Java歸并排序算法代碼實現(xiàn)

    Java歸并排序算法代碼實現(xiàn)

    歸并(Merge)排序法是將兩個(或兩個以上)有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的,下面這篇文章主要給大家介紹了關(guān)于Java歸并排序算法的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java實現(xiàn)的mysql事務(wù)處理操作示例

    Java實現(xiàn)的mysql事務(wù)處理操作示例

    這篇文章主要介紹了Java實現(xiàn)的mysql事務(wù)處理操作,結(jié)合實例形式較為詳細(xì)的分析了Java基于JDBC操作mysql數(shù)據(jù)庫實現(xiàn)事務(wù)處理的相關(guān)概念、操作技巧與注意事項,需要的朋友可以參考下
    2018-08-08

最新評論

额济纳旗| 波密县| 中西区| 如皋市| 榕江县| 梅州市| 延边| 桐城市| 丰宁| 根河市| 筠连县| 舟曲县| 山阴县| 开平市| 都江堰市| 石河子市| 黄冈市| 贞丰县| 凌云县| 盐津县| 易门县| 锦屏县| 浦城县| 福安市| 迭部县| 太康县| 张家川| 屏东市| 永胜县| 偏关县| 阿鲁科尔沁旗| 龙胜| 丰城市| 大兴区| 和政县| 西盟| 手游| 永寿县| 台前县| 山阴县| 宜兴市|