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

最全MyBatis核心配置文件總結(jié)(收藏)

 更新時(shí)間:2020年11月09日 16:35:44   作者:雙子孤狼  
這篇文章主要介紹了最全MyBatis核心配置文件總結(jié)(收藏),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

上一篇我們通過將MyBatis和傳統(tǒng)JDBC,DBUtils,以及Hibernate作了簡單的對比,并且列舉了一個(gè)非常簡單的demo,今天這篇主要介紹一下MyBatis的全局配置文件的使用

configuration

mybatis-config.xml文件的頭部格式我們就不說了,直接從屬性開始介紹,configuration為最頂層節(jié)點(diǎn),其余所有的屬性都必須嵌套在configuration內(nèi),MyBatis配置文件的頂層節(jié)點(diǎn)如下:

<properties></properties><!-- 屬性 -->
<settings></settings> <!-- 設(shè)置-->
<typeAliases></typeAliases><!-- 配置別名 -->
<typeHandlers></typeHandlers><!-- 類型處理器 -->
<objectFactory></objectFactory><!-- 對象工廠 -->
<plugins></plugins><!-- 插件 -->
<environments default=""><!-- 環(huán)境配置-->
 <environment id=""><!-- 環(huán)境變量 -->
 <transactionManager></transactionManager><!-- 事務(wù)管理器 -->
 <dataSource></dataSource><!-- 數(shù)據(jù)源 -->
 </environment>
</environments>
<databaseIdProvider></databaseIdProvider><!-- 數(shù)據(jù)庫廠商標(biāo)識(shí) -->
<mappers></mappers><!-- 映射器 -->

可以看到configuration內(nèi)的全部頂層節(jié)點(diǎn)只有9個(gè),下面我們就一個(gè)個(gè)來分析一下

properties

下面是一個(gè)相對完整的屬性配置

<!-- 配置resource-->
<properties resource="xxx/xxx.properties"><!-- 屬性 -->
 <property name="jdbc.driver" value="db.properties"/>
 </properties>

<!-- 配置url-->
<properties url="http://xxxx"><!-- 屬性 -->
 <property name="jdbc.driver" value="db.properties"/>
 </properties>

上面我特意分開寫,就是怕引起大家的誤解,因?yàn)閞esource和url只允許存在一個(gè),不能同時(shí)配置兩個(gè)屬性,可以看到源碼中的解析過程:

同時(shí)配置了resource和url會(huì)拋出異常。

配置了properties屬性之后,在xml其他配置文件中可以直接通過${xxx}來讀取。

properties配置有三種方式,resource或者url指定,直接配置在子節(jié)點(diǎn)properties中,另一種就是上一篇提到的,直接代碼中去其他地方讀取properties文件,然后傳入build方法。

那么這三種方式既然都能配置,假如屬性配置重復(fù)了,優(yōu)先級是怎么樣的呢?

properties優(yōu)先級

properties配置的屬性如果重復(fù),優(yōu)先級如下:
1、第一優(yōu)先:在代碼中直接通過properties傳入build方法。
2、第二優(yōu)先:通過resource或者url讀取到的properties文件中屬性。
3、第三優(yōu)先:直接在properties內(nèi)的子標(biāo)簽property內(nèi)定義的屬性。

在實(shí)際開發(fā)中,建議是只使用一種,使用多種方式混合的話會(huì)給后期維護(hù)造成困難,而且不同類型的配置屬性混合時(shí)可讀性也不好。

settings

settings是MyBatis中最復(fù)雜,也是最重要的內(nèi)容之一。當(dāng)然這里說的復(fù)雜并不是說配置方式復(fù)雜,而是settings能配置的東西非常多,一些很核心的功能都是通過settings標(biāo)簽配置的。

下面是一個(gè)完整的屬性配置示例:

<settings><!-- 設(shè)置-->
 <setting name="cacheEnabled" value="false"/>
 <setting name="lazyLoadingEnabled" value="false"/>
 <setting name="aggressiveLazyLoading" value="false"/>
 <setting name="multipleResultSetsEnabled" value="false"/>
 <setting name="useColumnLabel" value="false"/>
 <setting name="useGeneratedKeys" value="false"/>
 <setting name="autoMappingBehavior" value="NONE"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
 <setting name="defaultStatementTimeout" value="100"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="VARCHAR"/>
 <setting name="lazyLoadTriggerMethods" value="equals"/>
 <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver"/>
 <setting name="callSettersOnNulls" value="false"/>
 <setting name="logPrefix" value="LONELY_WOLF_"/>
 <setting name="logImpl" value="SLF4J"/>
 <setting name="proxyFactory" value="JAVASSIST"/>
 </settings>

所有的可設(shè)置值列舉如下(這些屬性有個(gè)映像就可以了,不需要去記,常用的多用幾次自然就記住了,不常用的需要的時(shí)候再查一下資料就可以了,所以建議大家可以收藏之后方便查詢):

參數(shù) 描述 可選值 默認(rèn)值
cacheEnabled 緩存配置的全局開關(guān) true
false
true
lazyLoadingEnabled 延遲加載全局開關(guān)。當(dāng)開啟時(shí),所有關(guān)聯(lián)對象都會(huì)延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過設(shè)置 sql語句上標(biāo)簽的fetchType 屬性來覆蓋該項(xiàng)的開關(guān)狀態(tài)。 true
false
false
aggressiveLazyLoading 當(dāng)啟用時(shí),對任意延遲屬性的調(diào)用會(huì)使帶有延遲加載屬性的對象完整加載;反之,每種屬性將會(huì)按需加載。 true
false
true
multipleResultSetsEnabled 是否允許單一語句返回多結(jié)果集(需要兼容驅(qū)動(dòng)) true
false
true
useColumnLabel 使用列標(biāo)簽代替列名。不同的驅(qū)動(dòng)在這方面會(huì)有不同的表現(xiàn), 具體可參考相關(guān)驅(qū)動(dòng)文檔或通過測試這兩種不同的模式來觀察所用驅(qū)動(dòng)的結(jié)果。 true
false
true
useGeneratedKeys 允許 JDBC 支持自動(dòng)生成主鍵,需要驅(qū)動(dòng)兼容。 如果設(shè)置為 true 則這個(gè)設(shè)置強(qiáng)制使用自動(dòng)生成主鍵,盡管一些驅(qū)動(dòng)不能兼容但仍可正常工作(比如Derby)。 true
false
false
autoMappingBehavior 指定 MyBatis 應(yīng)如何自動(dòng)映射列到字段或?qū)傩浴?NONE表示取消自動(dòng)映射;PARTIAL只會(huì)自動(dòng)映射沒有定義嵌套結(jié)果集映射的結(jié)果集。FULL會(huì)自動(dòng)映射任意復(fù)雜的結(jié)果集(無論是否嵌套)。 NONE
PARTIAL
FULL
PARTIAL
defaultExecutorType 配置默認(rèn)的執(zhí)行器。SIMPLE 就是普通的執(zhí)行器;REUSE 執(zhí)行器會(huì)重用預(yù)處理語句(prepared statements);BATCH 執(zhí)行器將重用語句并執(zhí)行批量更新。 SIMPLE
REUSE
BATCH
SIMPLE
defaultStatementTimeout 設(shè)置超時(shí)時(shí)間,它決定驅(qū)動(dòng)等待數(shù)據(jù)庫響應(yīng)的秒數(shù) 有效的整數(shù) 默認(rèn)null
safeRowBoundsEnabled 允許在嵌套語句中使用分頁(RowBounds) true
false
false
mapUnderscoreToCamelCase 是否開啟駝峰驗(yàn)證 true
false
false
localCacheScope MyBatis 利用本地緩存機(jī)制(LocalCache)防止循環(huán)引用(circular references)和加速重復(fù)嵌套查詢。默認(rèn)值為SESSION,這種情況下會(huì)緩存一個(gè)會(huì)話中執(zhí)行的所有查詢。 若設(shè)置值為STATEMENT,本地會(huì)話僅用在語句執(zhí)行上,對相同SqlSESSION的不同調(diào)用將不會(huì)共享數(shù)據(jù)。 SESSION
STATEMENT
SESSION
jdbcTypeForNull 當(dāng)沒有為參數(shù)提供特定的 JDBC 類型時(shí),為空值指定JDBC 類型。 某些驅(qū)動(dòng)需要指定列的JDBC 類型,多數(shù)情況直接用一般類型即可,比如 NULL、VARCHAR 或OTHER。 JdbcType枚舉類中的所有枚舉類型 OTHER
lazyLoadTriggerMethods 指定哪個(gè)對象的方法觸發(fā)一次延遲加載,多個(gè)方法則用逗號(hào)隔開 - equals,clone,hashCode,toString
defaultScriptingLanguage 指定動(dòng)態(tài)SQL生成的默認(rèn)語言 可以是類的別名也可以是全限定類名 org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver
callSettersOnNulls 指定當(dāng)結(jié)果集中值為null的時(shí)候是否調(diào)用映射對象的setter(map 對象時(shí)為 put)方法,這對于有Map.keySet()依賴或null值初始化的時(shí)候是有用的。注意基本類型(int、boolean等)是不能設(shè)置成null的 true
false
false
logPrefix 指定 MyBatis 增加到日志名稱的前綴 任意字符串 -
logImpl 指定 MyBatis 所用日志的具體實(shí)現(xiàn),未指定時(shí)將自動(dòng)查找 SLF4J
LOG4J
LOG4J2
JDK_LOGGING
COMMONS_LOGGING
STDOUT_LOGGING
NO_LOGGING
-
proxyFactory 指定 Mybatis 創(chuàng)建具有延遲加載能力的對象所用到的代理工具。 CGLIB
JAVASSIST
JAVASSIST

typeAliases

類型別名是為 Java 類型設(shè)置一個(gè)短的名字。它只和 XML 配置有關(guān),存在的意義僅在于用來減少類完全限定名的冗余。

直接指定類名

例如:

<typeAlias alias="UserMapper" type="com.lonelyWolf.mybatis.mapper.UserMapper"/>

這樣配置的話在MyBatis的xml文件中可以直接使用UserMapper代替其類的全限定名。

只指定包名

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

<package name="com.lonelyWolf.mybatis.mapper"/>

這么配置的話每一個(gè)在指定包名中的Java類,如果沒有使用注解指定名稱,則會(huì)默認(rèn)使用Bean的首字母小寫的非限定類名來作為它的別名,如果有注解,則優(yōu)先使用注解指定的別名。如:

@Alias("lonely_wolf")
public class LonelyWolf{
}

這里因?yàn)樽⒔庵付藙e名,所以會(huì)以注解為準(zhǔn),如果沒有注解,則默認(rèn)使用lonelyWolf作為別名。

系統(tǒng)默認(rèn)提供的別名

實(shí)際開發(fā)中,有很多返回類型是數(shù)據(jù)基本類型或者String,Map,List等非常常見的類型,這些類型MyBatis已經(jīng)為我們提供好了別名,我們就不需要另外再定義了。
以下就時(shí)MyBatis中默認(rèn)提供的別名:

別名 映射的類型
_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

PS:這些別名的字母都是不區(qū)分大小寫的,因?yàn)镸yBatis在注冊別名的時(shí)候會(huì)全部轉(zhuǎn)為小寫字母存儲(chǔ)

typeHandlers

typeHandlers主要是用來實(shí)現(xiàn)Java對象和數(shù)據(jù)庫字段類型額轉(zhuǎn)換關(guān)系。無論是 MyBatis 在預(yù)處理語句(PreparedStatement)中設(shè)置一個(gè)參數(shù)時(shí),還是從結(jié)果集中取出一個(gè)值時(shí), 都會(huì)用類型處理器將獲取的值以合適的方式轉(zhuǎn)換成 Java 類型。

配置方式如下:

<typeHandlers>
 		<!-- 自定義typeHandlers全限定類名 -->
 <typeHandler handler="xxx.xxx.xxx"></typeHandler>
 <!-- 獲取指定包名下的typeHandlers -->
 <package name="xxx.xxx"/>
 </typeHandlers>

MyBatis默認(rèn)提供的Java Bean和數(shù)據(jù)庫字段類型映射關(guān)系如下:

類型處理器 Java類型 JDBC類型
BooleanTypeHandler java.lang.Boolean,boolean 數(shù)據(jù)庫兼容的 BOOLEAN
ByteTypeHandler java.lang.Byte,byte 數(shù)據(jù)庫兼容的NUMERIC或BYTE
ShortTypeHandler java.lang.Short , short 數(shù)據(jù)庫兼容的 NUMERIC 或 SHORT INTEGER
IntegerTypeHandler java.lang.Integer , int 數(shù)據(jù)庫兼容的 NUMERIC 或 INTEGER
LongTypeHandler java.lang.Long , long 數(shù)據(jù)庫兼容的 NUMERIC 或 LONG INTEGER
FloatTypeHandler java.lang.Float , float 數(shù)據(jù)庫兼容的 NUMERIC 或 FLOAT
DoubleTypeHandler java.lang.Double ,double 數(shù)據(jù)庫兼容的 NUMERIC 或 DOUBLE
BigDecimalTypeHandler java.math.BigDecimal 數(shù)據(jù)庫兼容的 NUMERIC 或 DECIMAL
StringTypeHandler java.lang.String CHAR , VARCHAR
ClobTypeHandler java.lang.String CLOB , LONGVARCHAR
NStringTypeHandler java.lang.String NVARCHAR , NCHAR
NClobTypeHandler java.lang.String NCLOB
ByteArrayTypeHandler byte[] 數(shù)據(jù)庫兼容的字節(jié)流類型
BlobTypeHandler byte[] BLOB , LONGVARBINARY
DateTypeHandler java.util.Date TIMESTAMP
DateOnlyTypeHandler java.util.Date DATE
TimeOnlyTypeHandler java.util.Date TIME
SqlTimestampTypeHandler java.sql.Timestamp TIMESTAMP
SqlDateTypeHandler java.sql.Date DATE
SqlTimeTypeHandler java.sql.Time TIME
ObjectTypeHandler 任意類型 OTHER 或未指定類型
EnumTypeHandler 枚舉類型 VARCHAR-任何兼容的字符串類型,存儲(chǔ)枚舉的名稱(而不是索引)
EnumOrdinalTypeHandler 枚舉類型 任何兼容的 NUMERIC 或 DOUBLE 類型,存儲(chǔ)枚舉的索引(而不是名稱)

自定義typeHandlers

上面是MyBatis提供的默認(rèn)映射類型,可以處理大部分需求,如果我們需要有不同的需求,則可以自己定義類型,具體如何定義,在后面的文章會(huì)單獨(dú)分析,在這里不展開,感興趣的可以關(guān)注我,留意后續(xù)文章。

objectFactory

MyBatis 每次創(chuàng)建結(jié)果對象的新實(shí)例時(shí),它都會(huì)使用一個(gè)對象工廠(ObjectFactory)實(shí)例來完成。 默認(rèn)的對象工廠需要做的僅僅是實(shí)例化目標(biāo)類,要么通過默認(rèn)構(gòu)造方法,要么在參數(shù)映射存在的時(shí)候通過參數(shù)構(gòu)造方法來實(shí)例化。 如果想覆蓋對象工廠的默認(rèn)行為,則
 可以通過創(chuàng)建自己的對象工廠來實(shí)現(xiàn)

plugins

MyBatis 允許你在已映射語句執(zhí)行過程中的某一點(diǎn)進(jìn)行攔截調(diào)用。這里我們不詳細(xì)討論,后期會(huì)有單獨(dú)文章介紹MyBatis插件

environments

MyBatis 可以配置成適應(yīng)多種環(huán)境,這種機(jī)制有助于將 SQL 映射應(yīng)用于多種數(shù)據(jù)庫之中,例如:開發(fā)、測試和生產(chǎn)環(huán)境需要有不同的配置;或者共享相同 Schema 的多個(gè)生產(chǎn)數(shù)據(jù)庫, 想使用相同的 SQL 映射。許多類似的用例。
 注意:盡管可以配置多個(gè)環(huán)境,每個(gè)SqlSessionFactory實(shí)例只能選擇其一。所以,如果想連接兩個(gè)數(shù)據(jù)庫,就需要?jiǎng)?chuàng)建兩個(gè)SqlSessionFactory實(shí)例,每個(gè)數(shù)據(jù)庫對應(yīng)一個(gè)。

配置示例如下:

<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<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>

environment配置關(guān)鍵點(diǎn):

  • 默認(rèn)的環(huán)境 ID(比如:default=”development”)
  • 每個(gè) environment 元素定義的環(huán)境 ID(比如:id=”development”)。
  • 事務(wù)管理器的配置(比如:type=”JDBC”)。
  • 數(shù)據(jù)源的配置(比如:type=”POOLED”)。

事務(wù)管理器

在 MyBatis 中有兩種類型的事務(wù)管理器(也就是 type=”JDBC"或者"MANAGED”):

  • JDBC:這個(gè)配置就是直接使用了 JDBC 的提交和回滾設(shè)置,它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。
  • MANAGED:這個(gè)配置幾乎沒做什么。它從來不提交或回滾一個(gè)連接,而是讓容器來管理事務(wù)的整個(gè)生命周期(比如J2EE應(yīng)用容器上下文)。 默認(rèn)情況下它會(huì)關(guān)閉連接,然而一些容器并不希望這樣,因此需要將 closeConnection 屬性設(shè)置為 false 來阻止它默認(rèn)的關(guān)閉行為。

 如:

<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>

注意:如果單獨(dú)使用MyBatis而沒有集成能管理事務(wù)的容器,那么配置成MANAGED就會(huì)等同于沒有事務(wù),所以一般單獨(dú)使用MyBatis時(shí),應(yīng)配置為JDBC。

數(shù)據(jù)源

dataSource元素使用標(biāo)準(zhǔn)的 JDBC 數(shù)據(jù)源接口來配置JDBC連接對象的資源。有三種內(nèi)建的數(shù)據(jù)源類型(也就是 type=”[UNPOOLED|POOLED|JNDI]”)。

UNPOOLED

非連接池?cái)?shù)據(jù)源。UNPOOLED 類型的數(shù)據(jù)源僅僅需要配置以下 5 種屬性:

  • driver – 這是 JDBC 驅(qū)動(dòng)的 Java 類的完全限定名(并不是JDBC驅(qū)動(dòng)中可能包含的數(shù)據(jù)源類)
  • url – 這是數(shù)據(jù)庫的 JDBC URL 地址
  • username – 登錄數(shù)據(jù)庫的用戶名
  • password – 登錄數(shù)據(jù)庫的密碼
  • defaultTransactionIsolationLevel – 默認(rèn)的連接事務(wù)隔離級別

POOLED

連接池?cái)?shù)據(jù)源。除了上述提到UNPOOLED下的屬性外,會(huì)有更多屬性用來配置 POOLED 的數(shù)據(jù)源:

  • poolMaximumActiveConnections – 在任意時(shí)間可以存在的活動(dòng)(也就是正在使用)連接數(shù)量,默認(rèn)值:10
  • poolMaximumIdleConnections – 任意時(shí)間可能存在的空閑連接數(shù)
  • poolMaximumCheckoutTime – 在被強(qiáng)制返回之前,池中連接被檢出(checked out)時(shí)間,默認(rèn)值:20000 毫秒(即 20 秒)
  • poolTimeToWait – 這是一個(gè)底層設(shè)置,如果獲取連接花費(fèi)的相當(dāng)長的時(shí)間,它會(huì)給連接池打印狀態(tài)日志并重新嘗試獲取一個(gè)連接(避免在誤配置的情況下一直安靜的失?。?,默認(rèn)值:20000 毫秒(即 20 秒)
  • poolPingQuery – 發(fā)送到數(shù)據(jù)庫的偵測查詢,用來檢驗(yàn)連接是否處在正常工作秩序中并準(zhǔn)備接受請求。默認(rèn)是“NO PING QUERY SET”,這會(huì)導(dǎo)致多數(shù)數(shù)據(jù)庫驅(qū)動(dòng)失敗時(shí)帶有一個(gè)恰當(dāng)?shù)腻e(cuò)誤消息。
  • poolPingEnabled – 是否啟用偵測查詢。若開啟,也必須使用一個(gè)可執(zhí)行的 SQL 語句設(shè)置 poolPingQuery 屬性(最好是一個(gè)非??斓?SQL),默認(rèn)值:false
  • poolPingConnectionsNotUsedFor – 配置 poolPingQuery 的使用頻度。這可以被設(shè)置成匹配具體的數(shù)據(jù)庫連接超時(shí)時(shí)間,來避免不必要的偵測,默認(rèn)值:0(即所有連接每一時(shí)刻都被偵測 — 當(dāng)然僅當(dāng) poolPingEnabled 為 true 時(shí)適用)

JNDI

這個(gè)數(shù)據(jù)源的實(shí)現(xiàn)是為了能在如 EJB 或應(yīng)用服務(wù)器這類容器中使用,容器可以集中或在外部配置數(shù)據(jù)源,然后放置一個(gè) JNDI 上下文的引用。這種數(shù)據(jù)源配置只需要兩個(gè)屬性:

  • initial_context – 這個(gè)屬性用來在 InitialContext 中尋找上下文(即,initialContext.lookup(initial_context))。這是個(gè)可選屬性,如果忽略,那么 data_source 屬性將會(huì)直接從 InitialContext 中尋找。
  • data_source – 這是引用數(shù)據(jù)源實(shí)例位置的上下文的路徑。提供了 initial_context 配置時(shí)會(huì)在其返回的上下文中進(jìn)行查找,沒有提供時(shí)則直接在 InitialContext 中查找。

自定義數(shù)據(jù)源

有些業(yè)務(wù)場景可能需要自己自定義數(shù)據(jù)源,MyBatis也是支持的。自定義數(shù)據(jù)源必須要實(shí)現(xiàn)DataSourceFactory接口。然后采用如下配置:

 <dataSource type="自定義數(shù)據(jù)源全限定類名"></dataSource>

databaseIdProvider

MyBatis 可以根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的語句,這種多廠商的支持是基于映射語句中的 databaseId 屬性。 MyBatis 會(huì)加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫 databaseId 屬性的所有語句。如果同時(shí)找到帶有databaseId 和不帶 databaseId 的相同語句,則后者會(huì)被舍棄。 為支持多廠商特性只要像下面這樣在 mybatis-config.xml 文件中加入 databaseIdProvider 即可:

<databaseIdProvider type="DB_VENDOR" />

mappers

這個(gè)就是用來配置sql映射語句的xml文件了。mappers文件共有4種配置方式:
1、直接配置xml映射文件全限定名

<mappers>
 <mapper resource="com/lonelyWolf/mybatis/mapping/UserMapper.xml"/>
 </mappers>

2、通過url配置本地或者遠(yuǎn)程映射文件路徑

<mappers>
 <mapper url="file://xxx.xxx.UserMapper.xml"></mapper>
 </mappers>

3、通過配置Mapper接口的方式來配置。

<mappers>
 <mapper class="com.lonelyWolf.mybatis.mapper.UserMapper"></mapper>
 </mappers>

4、通過配置Mapper接口包名的形式來配置

<mappers>
 <package name="com.lonelyWolf.mybatis.mapper"/>
 </mappers>

注意:在使用第3和第4兩種方式配置的時(shí)候,需要把xml映射文件和Mapper接口文件放在同一個(gè)目錄,而且必須同名。

如果用的是maven配置的話,可能會(huì)出現(xiàn)以下錯(cuò)誤:Invalid bound statement (not found),出現(xiàn)之后需要注意檢查一下target下面的class目錄內(nèi)有沒有xml映射文件,如果沒有的話需要在pom文件中加入以下配置(因?yàn)閙aven默認(rèn)不會(huì)加載xml文件):

 <build> 
 <resources>
  <resource>
  <directory>src/main/java</directory>
  <includes>
   <include>**/*.xml</include>
  </includes>
  </resource>
 </resources>
 </build>

PS:上面的配置文件中所有的根節(jié)點(diǎn)需要按照順序配置,可以不配置某些屬性,但是如果配置了,從上到下一定要按照以下順序配置:
properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers

總結(jié)

本文主要介紹了MyBatis中的核心配置文件的使用,本文其實(shí)更適合作為手冊來參考,只需大致瀏覽,心里有個(gè)印象,需要用的時(shí)候再去查詢即可

到此這篇關(guān)于最全MyBatis核心配置文件總結(jié)(收藏)的文章就介紹到這了,更多相關(guān)MyBatis核心配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中MVC的自動(dòng)配置詳解

    SpringBoot中MVC的自動(dòng)配置詳解

    這篇文章主要介紹了SpringBoot中MVC的自動(dòng)配置詳解,在實(shí)際開發(fā)過程中,還有一些老的系統(tǒng)在使用xml格式來傳輸數(shù)據(jù),SpringBoot也提供了xml格式數(shù)據(jù)的返回,只需要小小的改動(dòng),就可以實(shí)現(xiàn),需要的朋友可以參考下
    2023-09-09
  • Java編程生產(chǎn)者消費(fèi)者實(shí)現(xiàn)的四種方法

    Java編程生產(chǎn)者消費(fèi)者實(shí)現(xiàn)的四種方法

    Java生產(chǎn)者和消費(fèi)者問題是線程安全模型中的經(jīng)典問題:生產(chǎn)者和消費(fèi)者在同一個(gè)時(shí)間段共用同一個(gè)存儲(chǔ)空間,生產(chǎn)者向存儲(chǔ)空間中添加產(chǎn)品呢,消費(fèi)者取走產(chǎn)品,當(dāng)存儲(chǔ)空間為空時(shí),消費(fèi)者阻塞,當(dāng)存儲(chǔ)空間滿時(shí),生產(chǎn)者阻塞
    2021-10-10
  • spring無法讀取properties文件數(shù)據(jù)問題詳解

    spring無法讀取properties文件數(shù)據(jù)問題詳解

    這篇文章主要介紹了spring無法讀取properties文件數(shù)據(jù)問題詳解,需要的朋友可以參考下
    2020-02-02
  • MybatisPlus使用Mybatis的XML的動(dòng)態(tài)SQL的功能實(shí)現(xiàn)多表查詢

    MybatisPlus使用Mybatis的XML的動(dòng)態(tài)SQL的功能實(shí)現(xiàn)多表查詢

    本文主要介紹了MybatisPlus使用Mybatis的XML的動(dòng)態(tài)SQL的功能實(shí)現(xiàn)多表查詢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • springcloud?eureka切換nacos的配置方法

    springcloud?eureka切換nacos的配置方法

    這篇文章主要介紹了springcloud?eureka切換nacos,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Java實(shí)現(xiàn)基于NIO的多線程Web服務(wù)器實(shí)例

    Java實(shí)現(xiàn)基于NIO的多線程Web服務(wù)器實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于Java實(shí)現(xiàn)基于NIO的多線程Web服務(wù)器實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停詳解

    Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署

    Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署

    本文主要介紹了Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Mybatis select記錄封裝的實(shí)現(xiàn)

    Mybatis select記錄封裝的實(shí)現(xiàn)

    這篇文章主要介紹了Mybatis select記錄封裝的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java進(jìn)階:Struts多模塊的技巧

    Java進(jìn)階:Struts多模塊的技巧

    Java進(jìn)階:Struts多模塊的技巧...
    2006-12-12

最新評論