mybatis學習教程(四)全域性設定簡略mybatis-config.xml
阿新 • • 發佈:2019-02-20
1、前言
本文簡略講解一下properties的檔案定義,與全域性變數的定義,以及別名的定義。2、propertiese檔案定位
可以把一些通用的屬性值配置在屬性檔案中,載入到mybatis執行環境內。
比如:建立db.properties配置資料庫連線引數。
sqlconfig的修改
<pre name="code" class="html"><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--配置屬性值,可以在屬性檔案內編寫屬性值,也可以在properties標籤裡面寫屬性值--> <properties resource="config/db.properties"> <!-- <property name="" value=""></property>--> </properties> <!--與spring整個後環境配置將廢除--> <environments default="development"> <environment id="development"> <!--使用JDBC事務管理--> <transactionManager type="JDBC"></transactionManager> <!--資料庫連線池--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!--載入mapper--> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
db.properties檔案
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertTonull
jdbc.username=root
jdbc.password=123456
2.1注意properties檔案的一些定義
MyBatis 將按照下面的順序來載入屬性:
1】在 properties 元素體內定義的屬性首先被讀取。
2】然後會讀取properties 元素中resource或 url 載入的屬性,它會覆蓋已讀取的同名屬性。
3】最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。
建議使用properties,不要在properties中定義屬性,只引用定義的properties檔案中屬性,並且properties檔案中定義的key要有一些特殊的規則。
3、mybatis全域性屬性設定
Setting(設定) | Description(描述) | Valid Values(驗證值組) | Default(預設值) |
cacheEnabled | 在全域性範圍內啟用或禁用快取配置任何對映器在此配置下。 | true | false | TRUE |
lazyLoadingEnabled | 在全域性範圍內啟用或禁用延遲載入。禁用時,所有協會將熱載入。 | true | false | TRUE |
aggressiveLazyLoading | 啟用時,有延遲載入屬性的物件將被完全載入後呼叫懶惰的任何屬性。否則,每一個屬性是按需載入。 | true | false | TRUE |
multipleResultSetsEnabled | 允許或不允許從一個單獨的語句(需要相容的驅動程式)要返回多個結果集。 | true | false | TRUE |
useColumnLabel | 使用列標籤,而不是列名。在這方面,不同的驅動有不同的行為。參考驅動文件或測試兩種方法來決定你的驅動程式的行為如何。 | true | false | TRUE |
useGeneratedKeys | 允許JDBC支援生成的金鑰。相容的驅動程式是必需的。此設定強制生成的鍵被使用,如果設定為true,一些驅動會不相容性,但仍然可以工作。 | true | false | FALSE |
autoMappingBehavior | 指定MyBatis的應如何自動對映列到欄位/屬性。NONE自動對映。 PARTIAL只會自動對映結果沒有巢狀結果對映定義裡面。 FULL會自動對映的結果對映任何複雜的(包含巢狀或其他)。 | NONE, PARTIAL, FULL | PARTIAL |
defaultExecutorType | 配置預設執行人。SIMPLE執行人確實沒有什麼特別的。 REUSE執行器重用準備好的語句。 BATCH執行器重用語句和批處理更新。 | SIMPLE REUSE BATCH | SIMPLE |
defaultStatementTimeout | 設定驅動程式等待一個數據庫響應的秒數。 | Any positive integer | Not Set (null) |
safeRowBoundsEnabled | 允許使用巢狀的語句RowBounds。 | true | false | FALSE |
mapUnderscoreToCamelCase | 從經典的資料庫列名A_COLUMN啟用自動對映到駱駝標識的經典的Java屬性名aColumn。 | true | false | FALSE |
localCacheScope | MyBatis的使用本地快取,以防止迴圈引用,並加快反覆巢狀查詢。預設情況下(SESSION)會話期間執行的所有查詢快取。如果localCacheScope=STATMENT本地會話將被用於語句的執行,只是沒有將資料共享之間的兩個不同的呼叫相同的SqlSession。 | SESSION | STATEMENT | SESSION |
dbcTypeForNull | 指定為空值時,沒有特定的JDBC型別的引數的JDBC型別。有些驅動需要指定列的JDBC型別,但其他像NULL,VARCHAR或OTHER的工作與通用值。 | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | 指定觸發延遲載入的物件的方法。 | A method name list separated by commas | equals,clone,hashCode,toString |
defaultScriptingLanguage | 指定所使用的語言預設為動態SQL生成。 | A type alias or fully qualified class name. | org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver |
callSettersOnNulls | 指定如果setter方法或地圖的put方法時,將呼叫檢索到的值是null。它是有用的,當你依靠Map.keySet()或null初始化。注意原語(如整型,布林等)不會被設定為null。 | true | false | FALSE |
logPrefix | 指定的字首字串,MyBatis將會增加記錄器的名稱。 | Any String | Not set |
logImpl | 指定MyBatis的日誌實現使用。如果此設定是不存在的記錄的實施將自動查詢。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | Not set |
proxyFactory | 指定代理工具,MyBatis將會使用建立懶載入能力的物件。 | CGLIB | JAVASSIST | |
4、別名的定義 |
別名 |
對映的型別 |
_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 |
typeAliases別名
sqlconfig定義檔案如下:package 可以使用多個
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置屬性值,可以在屬性檔案內編寫屬性值,也可以在properties標籤裡面寫屬性值-->
<properties resource="config/db.properties">
<!-- <property name="" value=""></property>-->
</properties>
<typeAliases>
<!--別名定義1:指定單個路徑定義別名(不常用)-->
<!-- <typeAlias type="com.ycy.mybatis.module.User" alias="User"/>-->
<!--別名定義2:指定包路徑,預設為類的名字(首字母大小寫都可以,建議大寫)-->
<package name="com.ycy.mybatis.module" />
</typeAliases>
<!--與spring整個後環境配置將廢除-->
<environments default="development">
<environment id="development">
<!--使用JDBC事務管理-->
<transactionManager type="JDBC"></transactionManager>
<!--資料庫連線池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--載入mapper-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
5、mapper配置
3種方式只選擇一種,注意由於我用的idea,親測只能用第一種方法,就是resource方式,不要問我為什麼,任性。 提示:但是以後用spring了,有一個spring掃描。 <!--載入mapper-->
<mappers>
<!--如果和spring整合,可以使用整合包的 mapper掃描器,此處mapper配置不需要;-->
<!--1:通過resource路徑匯入xml對映(idea必須在resource檔案下面)-->
<mapper resource="mapper/UserMapper.xml"/>
<!--2:通過class路徑匯入對映,注意:此時class檔案必須與想xml檔案在一個目錄下,同名-->
<mapper class="com.ycy.mybatis.dao.UserMapper" />
<!--3:通過批量匯入package,自動掃描包下面mapper介面 注意:此時class檔案必須與想xml檔案在一個目錄下,同名-->
<package name="com.ycy.mybatis.dao"/>
</mappers>
如有疑問:qq群:78275755(目前木有人,來啦更好)本專案1-5章 初級教程 專案百度分享盤: http://pan.baidu.com/s/1o63SUaI