配置解析和別名配置

配置解析

1、核心配置解析

  • mybatis-config.xml

  • MyBatis的配置文件包含了會深深影響MyBatis行爲的設置和屬性信息

configuration(配置)
properties(屬性)
settings(設置)
typeAliases(類型別名)
typeHandlers(類型處理器)
objectFactory(對象工廠)
plugins(插件)
environments(環境配置)
environment(環境變量)
transactionManager(事務管理器)
dataSource(數據源)
databaseIdProvider(數據庫廠商標識)
mappers(映射器)

2、環境配置(environments)

MyBatis 可以配置成適應多種環境

不過要記住:儘管可以配置多個環境,但每個 SqlSessionFactory 實例只能選擇一種環境。

學會使用配置多套運行環境!學會選擇一個id值。

MyBatis默認的事務管理器就是JDBC,連接池:POOLED

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nOAreMeA-1590481914483)(C:\Users\93224\Pictures\java\Mybatis\3.png)]

3、屬性(properties)

我們可以通過properties屬性來實現引用配置文件(按照順序寫,一定要按照順序寫)

這些屬性都是可外部配置且可動態替換的,既可以在典型的 Java 屬性文件中配置,亦可通過 properties 元素的子元素來傳遞。【db.properties】

編寫一個配置文件

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eMJOGq3R-1590481914492)(C:\Users\93224\Pictures\java\Mybatis\4.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-d4ilxgiz-1590481914497)(C:\Users\93224\Pictures\java\Mybatis\5.png)]

在覈心配置Mabatis-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核心配置文件-->
<configuration>
    <properties resource="db.properties"/>
    <!--environments配置環境組-->
    <!--default默認環境-->
    <environments default="development">
        <!--environment單個環境-->
        <environment id="development">
            <!--transactionManager配置事務管理器-->
            <transactionManager type="JDBC"/>
            <!--配置連接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/kuang/dao/Mapper.xml"/>
    </mappers>
</configuration>
  • 可以直接引入外部文件
  • 可以在其中增加一些屬性配置
  • 如果兩個文件有同一字段,優先使用外部配置文件的!

4、配置別名

這個配置是在Mapper-config.xml進行配置

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mej44H0H-1590481914502)(C:\Users\93224\Desktop\Java\Mybatis\Pictures\2.png)]

  • 類型別名是爲 Java 類型設置一個短的名字。是在mbatis-config.xml中起別名的

  • 存在的意義僅在於用來減少類完全限定名的冗餘。

        <!--可以給實體類起別名-->
        <typeAliases>
            <typeAlias type="com.rui.pojo.User" alias="User"/>
        </typeAliases>
    

    也可以指定一個包名,MyBatis 會在包名下面搜索需要的 Java Bean,比如:

    掃描實體類的包,他的默認別名就爲這個類的類名,首字母小寫!

     <!--可以給實體類起別名,,這個包下面所有的類只要使用首字母小寫,就是別名了-->
        <typeAliases>
            <package name="com.rui.pojo"/>
        </typeAliases>
    

在實體類比較少的時候,使用第一種方式。

如果實體類十分多,建議使用第二種方式。

第一種可以隨意起別名,第二種則不行,如果非要改,需要在實體類(pojo)上增加@Alias註解

@Alias("author")
public class Author {
    ...
}

下面是一些爲常見的 Java 類型內建的類型別名。它們都是不區分大小寫的,注意,爲了應對原始類型的命名重複,採取了特殊的命名風格。

別名 映射的類型
_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
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

5、設置

這是 MyBatis 中極爲重要的調整設置,它們會改變 MyBatis 的運行時行爲。

設置名 描述 有效值 默認值
cacheEnabled 全局性地開啓或關閉所有映射器配置文件中已配置的任何緩存。 true | false true
lazyLoadingEnabled 延遲加載的全局開關。當開啓時,所有關聯對象都會延遲加載。 特定關聯關係中可通過設置 fetchType 屬性來覆蓋該項的開關狀態。 true | false false
aggressiveLazyLoading 開啓時,任一方法的調用都會加載該對象的所有延遲加載屬性。 否則,每個延遲加載屬性會按需加載(參考 lazyLoadTriggerMethods)。 true | false false (在 3.4.1 及之前的版本中默認爲 true)
multipleResultSetsEnabled 是否允許單個語句返回多結果集(需要數據庫驅動支持)。 true | false true
useColumnLabel 使用列標籤代替列名。實際表現依賴於數據庫驅動,具體可參考數據庫驅動的相關文檔,或通過對比測試來觀察。 true | false true
useGeneratedKeys 允許 JDBC 支持自動生成主鍵,需要數據庫驅動支持。如果設置爲 true,將強制使用自動生成主鍵。儘管一些數據庫驅動不支持此特性,但仍可正常工作(如 Derby)。 true | false False
autoMappingBehavior 指定 MyBatis 應如何自動映射列到字段或屬性。 NONE 表示關閉自動映射;PARTIAL 只會自動映射沒有定義嵌套結果映射的字段。 FULL 會自動映射任何複雜的結果集(無論是否嵌套)。 NONE, PARTIAL, FULL PARTIAL
autoMappingUnknownColumnBehavior 指定發現自動映射目標未知列(或未知屬性類型)的行爲。NONE: 不做任何反應WARNING: 輸出警告日誌('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日誌等級必須設置爲 WARNFAILING: 映射失敗 (拋出 SqlSessionException) NONE, WARNING, FAILING NONE
defaultExecutorType 配置默認的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(PreparedStatement); BATCH 執行器不僅重用語句還會執行批量更新。 SIMPLE REUSE BATCH SIMPLE
defaultStatementTimeout 設置超時時間,它決定數據庫驅動等待數據庫響應的秒數。 任意正整數 未設置 (null)
defaultFetchSize 爲驅動的結果集獲取數量(fetchSize)設置一個建議值。此參數只可以在查詢設置中被覆蓋。 任意正整數 未設置 (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 是否開啓駝峯命名自動映射,即從經典數據庫列名 A_COLUMN 映射到經典 Java 屬性名 aColumn。 true | false False
localCacheScope MyBatis 利用本地緩存機制(Local Cache)防止循環引用和加速重複的嵌套查詢。 默認值爲 SESSION,會緩存一個會話中執行的所有查詢。 若設置值爲 STATEMENT,本地緩存將僅用於執行語句,對相同 SqlSession 的不同查詢將不會進行緩存。 SESSION | STATEMENT SESSION
jdbcTypeForNull 當沒有爲參數指定特定的 JDBC 類型時,空值的默認 JDBC 類型。 某些數據庫驅動需要指定列的 JDBC 類型,多數情況直接用一般類型即可,比如 NULL、VARCHAR 或 OTHER。 JdbcType 常量,常用值:NULL、VARCHAR 或 OTHER。 OTHER
lazyLoadTriggerMethods 指定對象的哪些方法觸發一次延遲加載。 用逗號分隔的方法列表。 equals,clone,hashCode,toString
defaultScriptingLanguage 指定動態 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會返回一個空實例。 請注意,它也適用於嵌套的結果集(如集合或關聯)。(新增於 3.4.2) true | false false
logPrefix 指定 MyBatis 增加到日誌名稱的前綴。 任何字符串 未設置
logImpl 指定 MyBatis 所用日誌的具體實現,未指定時將自動查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING 未設置
proxyFactory 指定 Mybatis 創建可延遲加載對象所用到的代理工具。 CGLIB | JAVASSIST JAVASSIST (MyBatis 3.3 以上)
vfsImpl 指定 VFS 的實現 自定義 VFS 的實現的類全限定名,以逗號分隔。 未設置
useActualParamName 允許使用方法簽名中的名稱作爲語句參數名稱。 爲了使用該特性,你的項目必須採用 Java 8 編譯,並且加上 -parameters 選項。(新增於 3.4.1) true | false true
configurationFactory 指定一個提供 Configuration 實例的類。 這個被返回的 Configuration 實例用來加載被反序列化對象的延遲加載屬性值。 這個類必須包含一個簽名爲static Configuration getConfiguration() 的方法。(新增於 3.2.3) 一個類型別名或完全限定類名。 未設置

6、其他配置

7、映射器(Mapper)

MapperRegisty:註冊綁定我們的Mapper

使用下面的方式是最多的,別的就暫時不考慮

<mappers>
    <mapper resource="com/kuang/dao/Mapper.xml"/>
</mappers>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章