MyBatis核心配置檔案
mybatis核心配置檔案建立步驟:
1)核心配置檔案配置
2)pojo模型建立
3)對映檔案配置
4)獲取SqlSessionFactory
5)獲取SqlSession
6)CRUD操作
7)事務操作
8)關閉SqlSession
mybatis的基本操作在這裡:
這篇文章總結一下核心配置檔案mybatis-config.xml的配置方法。
初體驗中的mybatis-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><!-- 對事務的管理和連線池的配置 --><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="oracle.jdbc.driver.OracleDriver"/><propertyname="url"value="jdbc:oracle:thin:@localhost:1521:orcl" /><propertyname="username"value="ibatis"/><propertyname="password"value="ibatis"/></dataSource></environment></environments><!-- mapping 檔案路徑配置 --><mappers><mapperresource="com/yu/res/UserMapper.xml"/></mappers></configuration>
Properties
由上面的配置可以看出,我們的資料庫資訊是直接寫到了配置裡
而一般情況下,對於這種配置資訊,一般我們都會把它放到properties資原始檔中。
1.建立一個資原始檔jdbc.properties:
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=mybatis
jdbc.password=mybatis
2.mybatis-config.xml中引入
<propertiesresource="jdbc.properties"/>
當然也可以在<properties/>標籤中定義屬性:
<propertiesresource="jdbc.properties"><propertyname="jdbc.driverClassName"value="oracle.jdbc.driver.OracleDriver"/></properties>
3.使用properties檔案裡的屬性
<dataSourcetype="POOLED"><propertyname="driver"value="${jdbc.driverClassName}"/><propertyname="url"value="${jdbc.url}"/><propertyname="username"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/></dataSource>
說下這些配置的載入順序:
.在 properties 元素體內指定的屬性首先被讀取。.從類路徑下資源或 properties 元素的 url 屬性中載入的屬性第二被讀取,它會覆蓋已經存在的完全一樣的屬性。.作為方法引數傳遞的屬性最後被讀取,它也會覆蓋任一已經存在的完全一樣的屬性,這些屬性可能是從 properties 元素體內和資源/url 屬性中載入的。
所以,屬性的優先順序為:方法直接傳遞引數 > 通過resource、url引用的資源 > properties元素體內定義
Settings
setting設定,關係到mybatis的主要設定,關係到mybatis執行時的行為方式。
配置方式:
<settings><settingname="cacheEnabled"value="true"/><settingname="lazyLoadingEnabled"value="true"/><settingname="multipleResultSetsEnabled"value="true"/><settingname="useColumnLabel"value="true"/><settingname="useGeneratedKeys"value="false"/><settingname="autoMappingBehavior"value="PARTIAL"/><settingname="defaultExecutorType"value="SIMPLE"/><settingname="defaultStatementTimeout"value="25"/><settingname="safeRowBoundsEnabled"value="false"/><settingname="mapUnderscoreToCamelCase"value="false"/><settingname="localCacheScope"value="SESSION"/><settingname="jdbcTypeForNull"value="OTHER"/><settingname="lazyLoadTriggerMethods"value="equals,clone,hashCode,toString"/></settings>
設定引數 | 描述 | 有效值 | 預設值 |
---|---|---|---|
cacheEnabled | 這個配置使全域性的對映器啟用或禁用 快取。 | true | false | true |
lazyLoadingEnabled | 全域性啟用或禁用延遲載入。當禁用時, 所有關聯物件都會即時載入。 This value can be superseded for an specific relation by using the fetchType attribute on it. | true | false | false |
aggressiveLazyLoading | 當啟用時, 有延遲載入屬性的物件在被 呼叫時將會完全載入任意屬性。否則, 每種屬性將會按需要載入。 | true | false | true |
multipleResultSetsEnabled | 允許或不允許多種結果集從一個單獨 的語句中返回(需要適合的驅動) | true | false | true |
useColumnLabel | 使用列標籤代替列名。 不同的驅動在這 方便表現不同。 參考驅動文件或充分測 試兩種方法來決定所使用的驅動。 | true | false | true |
useGeneratedKeys | 允許 JDBC 支援生成的鍵。 需要適合的 驅動。 如果設定為 true 則這個設定強制 生成的鍵被使用, 儘管一些驅動拒絕兼 容但仍然有效(比如 Derby) | true | false | False |
autoMappingBehavior | 指定 MyBatis 如何自動對映列到欄位/ 屬性。PARTIAL 只會自動對映簡單, 沒有巢狀的結果。FULL 會自動對映任 意複雜的結果(巢狀的或其他情況) 。 | NONE, PARTIAL, FULL | PARTIAL |
defaultExecutorType | 配置預設的執行器。SIMPLE 執行器沒 有什麼特別之處。REUSE 執行器重用 預處理語句。BATCH 執行器重用語句 和批量更新 | SIMPLE REUSE BATCH | SIMPLE |
defaultStatementTimeout | 設定超時時間, 它決定驅動等待一個數 據庫響應的時間。 | Any positive integer | Not Set (null) |
safeRowBoundsEnabled | Allows using RowBounds on nested statements. | true | false | False |
mapUnderscoreToCamelCase | Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. | true | false | False |
localCacheScope | MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession. | SESSION | STATEMENT | SESSION |
jdbcTypeForNull | Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, VARCHAR or OTHER. | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | Specifies which Object's methods trigger a lazy load | A method name list separated by commas | equals,clone,hashCode,toString |
defaultScriptingLanguage | Specifies the language used by default for dynamic SQL generation. | A type alias or fully qualified class name. | org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver |
callSettersOnNulls | 當結果集中含有Null值時是否執行對映物件的setter或者Map物件的put方法。此設定對於原始型別如int,boolean等無效。 | true | false | false |
logPrefix | Specifies the prefix string that MyBatis will add to the logger names. | Any String | Not set |
logImpl | Specifies which logging implementation MyBatis should use. If this setting is not present logging implementation will be autodiscovered. | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | Not set |
proxyFactory | Specifies the proxy tool that MyBatis will use for creating lazy loading capable objects. | CGLIB | JAVASSIST | CGLIB |
typeAliases
類型別名。
給java型別取一個別名,方便在核心配置、對映配置中來使用這個java型別。
在 mybatis初體驗(一) 中的UserMapper.xml配置中,有這樣的配置資訊:
<selectid="findUserById"resultType="com.yu.model.User"parameterType="long">
select * from t_user where id = #{id}
</select>
可以看到resultType屬性的值為com.yu.model.User,表示這個查詢返回的型別為com.yu.model.User型別。
如果有很多種型別的話,每次都得把型別的全路徑寫上,感覺就很費事。
所以就可以用mybatis提供的typeAliases來進行別名配置。
在核心配置檔案中加上配置:
<typeAliases><typeAliastype="com.yu.model.User"alias="User"/><typeAliastype="com.yu.model.Org"alias="Org"/></typeAliases>
然後修改UserMapper.xml的配置:
<selectid="findUserById"resultType="User"parameterType="long">
select * from t_user where id = #{id}
</select>
這樣就簡便多了。
當然,這是對於我們自定義的型別,或者其他型別,用這種設定別名的方式。
其實mybatis給我們提供了很多內建的類型別名,使我們不用在typeAliases中指定,就可以直接使用,下面是mybatis中內建的別名:
別名 | 對映的型別 |
---|---|
_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 |
typeHandlers
型別處理器。
用途:
1)獲取資料庫的值,以合適的方式轉變為對應的java型別
2)將java型別,以合適的方式轉化為資料庫的儲存型別
mybatis中預設的型別處理器:
型別處理器 | Java 型別 | JDBC 型別 |
---|---|---|
BooleanTypeHandler | java.lang.Boolean, boolean | 任何相容的布林值 |
ByteTypeHandler | java.lang.Byte, byte | 任何相容的數字或位元組型別 |
ShortTypeHandler | java.lang.Short, short | 任何相容的數字或短整型 |
IntegerTypeHandler | java.lang.Integer, int | 任何相容的數字和整型 |
LongTypeHandler | java.lang.Long, long | 任何相容的數字或長整型 |
FloatTypeHandler | java.lang.Float, float | 任何相容的數字或單精度浮點型 |
DoubleTypeHandler | java.lang.Double, double | 任何相容的數字或雙精度浮點型 |
BigDecimalTypeHandler | java.math.BigDecimal | 任何相容的數字或十進位制小數型別 |
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[] | 任何相容的位元組流型別 |
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 | Any | 其他或未指定型別 |
相關推薦Mybatis核心配置檔案SqlMapConfig.xml配置內容: SqlMapConfig.xml中配置的內容和順序如下: 1.properties(屬性) 2.settings(全域性配置引數) 3.typeAliases(類型別名) 4.typeHandlers(型別處理器) 5.objectFactory(物件工廠) 6.pl MyBatis學習總結(二)——MyBatis核心配置檔案與輸入輸出對映在上一章中我們學習了《MyBatis學習總結(一)——ORM概要與MyBatis快速起步》,這一章主要是介紹MyBatis核心配置檔案、使用介面+XML實現完整資料訪問、輸入引數對映與輸出結果對映等內容。 一、MyBatis配置檔案概要 MyBatis核心配置檔案在初始化時會被引用,在配置檔案中定義了一些 mybatis核心配置檔案詳解1.屬性(properties) <properties resource="db.properties"> <property name="driver" val MyBatis核心配置檔案mybatis核心配置檔案建立步驟: 1)核心配置檔案配置 2)pojo模型建立 3)對映檔案配置 4)獲取SqlSessionFactory 5)獲取SqlSession 6)CRUD操作 7)事務操作 8)關閉SqlSession mybatis的 Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發知識點梳理 詳細講義 一.Mybatis快速入門 1.1 框架介紹 框架是一款半成品軟體,我們可以基於這個半成品軟體繼續開發,來完成我們個性化的需求! 框架:大工具,我們利用工具,可以快速開發專案 (mybatis也是一個jar包,不過提供的功能更加多) jar包:小工具 如圖: &n MyBatis基本要素---核心配置檔案今天就簡單的敘述下MyBatis的核心配置檔案吧~~ configuration 配置 properties 可以配置在java屬性配置檔案中 set mybatis入門級04——核心配置檔案SqlMapConfig.xml(一)一、properties 將資料庫連線引數單獨配置在db.properties中,只需要在SqlMapConfig.xml檔案中呼叫即可。 在SqlMapConfig.xml中就不需要對資料庫連線引數進 Java框架學習_Mybatis(七)Mybatis的核心配置檔案的配置1、Mybatis的核心配置檔案: 核心配置檔案裡面還有很多可以配置的(DTD格式,順序不能亂) properties :屬性 settings typeAliases :別名 typeHandlers objectFactory plugins Mybatis(1、核心配置檔案、Properties、Settings、typeAliases...)此章主要介紹sqlMapConfiguragion.xml的核心配置屬性。 mybatis、mappers、Environments、ObjectFactory、typeHandlers、Proper Mybatis學習筆記-核心配置檔案概述properties Mybatis核心配置檔案包含了資料庫連線的核心配置和mybatis框架的基礎配置,是mybatis的核心描述檔案。 下面逐一介紹該配置檔案中的常用配置。 1.properties標籤 該標籤常用於定義mybatis環境的常量值 (手寫)mybatis 核心配置文件和接口不在同一包下的解決方案內置 中間 configure idea pan 數據源配置 uil 基礎 主目錄 smart-sh-mybatis項目app.xml文件中此處配置為: 1 <!-- 從整合包裏找,org.mybatis:mybatis-spring:1.2.4 --> struts2 xml(核心配置檔案)struts.xml (核心配置檔案) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts C Hibernate ---核心配置檔案(Hibernate.cfg.xml)詳解<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD Mybatis根據配置檔案獲取session(多資料來源)1.config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.or 使用 <!-- 指定使用hibernate核心配置檔案 --> <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>在bean.xml檔案中,這樣使用出現問題 <!-- 指定使用hibernate核心配置檔案 --> <property name="configLocations" value="classpath:hibernate.cfg.xml"></property> JavaEE-SSM:007 Mybatis的配置檔案解析(4)1.系統級別的typeHandler 2.自定義typeHandler 想要自己實現typeHandler,需要實現TypeHandler<T>介面,T就是你要轉換的Java型別 setParameter(PreparedSta JavaEE-SSM:006 Mybatis的配置檔案解析(3)別名主要用於Mapper的xml檔案指定輸入型別或者返回結果型別的名稱的時候,替代全限定名。(前文已經提及如何使用別名) 1.系統級別的typeAlias(類型別名) 2.自定義別名 這裡的alias屬性值得是 JavaEE-SSM:005 Mybatis的配置檔案解析(2)setting配置不常用,給出配置說明: 本文給出Setting配置的全量程式碼: <settings> <setting name="cacheEnabled" value="true" JavaEE-SSM:004 Mybatis的配置檔案解析(1)1.配置項:不可顛倒順序 2.Properties配置 好處就是:一處配置,多處使用。當然不嫌麻煩,直接配置,不使用property也是可以的。 在Properties下配置相關的配置Property:name是引用的時候的名稱 JavaEE-SSM:009 Mybatis的配置檔案解析(6)檔案型別轉換器(不常用) 假設資料庫有blob格式的欄位儲存需求: 對應著POJO的byte陣列: ResultMap中有對應的typeHandler配置: 當然,我們可以在POJO中使用InputStream替代byte陣列,但 |