Mybatis(1、核心配置檔案、Properties、Settings、typeAliases...)
此章主要介紹sqlMapConfiguragion.xml的核心配置屬性。
mybatis、mappers、Environments、ObjectFactory、typeHandlers、Properties、Settings、typeAliases、Plugins
mybatis核心
MyBatis的xml配置檔案包含了設定和影響MyBatis行為的屬性,XML配置檔案的層次飢結構如下:
Configuration
Properties屬性
Settings設定
typeAliases類型別名
typeHandlers型別處理器
ObjectFactory物件工廠
Plugins外掛
Environments環境
Environment環境變數
transactionManager事物管理器
datasource資料來源
mappers對映器
基本配置項:
<?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>
注意:
MyBatis 將按照下面的順序來載入屬性:
在 properties素體內定義的屬性首先被讀取。
然後會讀取properties 元素中resource或 url 載入的屬性,它會覆蓋已讀取的同名屬性。
最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。
建議:
不要在properties元素體內新增任何屬性值,只將屬性值定義在properties檔案中。
在properties檔案中定義屬性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX
Properties屬性
作用:這些是外部化的, 可替代的屬性, 這些屬性也可以配置在典型的 Java 屬性配置檔案中, 或者通過 properties 元素的子元素來傳遞
<properties resource="db.properties">
<!--properties中還可以配置一些屬性名和屬性值 -->
<property name="jdbc.driver" value=""/>
</properties>
Settings的設定
mybatis框架在執行時可以調整一些執行引數。
settings是極其重要的配置, 它們會修改 MyBatis 在執行時的行為方式。
設定選項 | 描述 | 可用值 | 預設值 | |
cacheEnabled |
全域性性地啟用或禁用所有在 mapper配 置檔案 |
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是否以及如何自動將列映射到欄位/屬性。 PARTIAL:只是自動對映簡單、非巢狀的結果集。 |
NONE,PARTIAL, FULL |
PARTIAL | |
defaultExecutorType |
配置預設的執行器(executor)。SIMPLE:簡單的執行器。 REUSE:重用preparedstatements的執行器。 |
SIMPLEREUSE BATCH |
SIMPLE | |
defaultStatementTimeout | 設定查詢資料庫超時時間。 | 任何正整數 |
|
注:一般情況下我們不需要特別指定,都使用的是預設值除非特殊需要自己指定狀態值。
具體配置如下
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
typeAliases類型別名
定義類型別名的意義以及用途:
在mapper.xml中,定義很多的statement,statement需要parameterType指定輸入引數的型別、需要resultType指定輸出結果的對映型別。例如查詢結果返回的是一個user物件,此處可以定義一個user bean,然後入參或者返回引數可以指定為alias的定義的別名user即可。
1、單個定義別名
<configuration>
<typeAliases>
<!-- 針對單個別名定義 type:型別的路徑 alias:別名 -->
<typeAlias type="org.mybatis.po.User" alias="user"/>
</typeAliases>
</configuration>
2、批量定義別名(常用)
<configuration>
<typeAliases>
<!-- 批量別名定義 指定包名,mybatis自動掃描包中的po類,自動定義別名,別名就是類名(首字母大寫或小寫都可以) -->
<package name="org.mybatis.po" />
</typeAliases>
</configuration>
typeHandlers型別處理器
說明:mybatis中通過typeHandlers完成jdbc型別和java型別的轉換。通常情況下,mybatis提供的型別處理器滿足日常需要,不需要自定義mybatis支援型別處理器
ObjectFactory物件工廠
MyBatis每次建立結果物件的新例項時,它都會使用一個物件工廠(ObjectFactory)例項來完成。預設的物件工廠需要做的僅僅是例項化目標類,要麼通過預設構造方法,要麼在引數對映存在的時候通過引數構造方法來例項化。預設情況下,我們不需要配置,mybatis會呼叫預設實現的objectFactory。除非我們要自定義ObjectFactory的實現,那麼我們才需要去手動配置。
// ExampleObjectFactory.java
public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) {
return super.create(type);
}
public Object create(
Class type,
List<Class> constructorArgTypes, List<Object> constructorArgs) {
return super.create(type, constructorArgTypes, constructorArgs);
}
public void setProperties(Properties properties) { super.setProperties(properties);
}
}
//MapperConfig.xml
<objectFactory type="org.mybatis.example.ExampleObjectFactory">
<property name="someProperty" value="100"/>
</objectFactory>
ObjectFactory介面非常簡單,它包含兩個create的方法,一個是預設構造器,還有一個是含引數的構造器。最後的setProperties方法用來配置ObjectFactory。在初始化您自己的ObjectFactory例項之後,定義在objectFactory元素主體中的屬性會以引數的形式傳遞給setProperties方法。
Plugins外掛
plugins是一個可選配置。mybatis中的plugin其實就是個interceptor,它可以攔截Executor、ParameterHandler、ResultSetHandler、StatementHandler的部分方法,處理我們自己的邏輯。Executor就是真正執行sql語句的東西, ParameterHandler是處理我們傳入引數的,還記得前面講TypeHandler的時候提到過,mybatis預設幫我們實現了不少的typeHandler,當我們不顯示配置typeHandler的時候,mybatis會根據引數型別自動選擇合適的typeHandler執行,其實就是ParameterHandler在選擇。ResultSetHandler就是處理返回結果的。
Environments環境
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置資料庫連線資訊 -->
<dataSource type="POOLED">
<!-- value屬性值引用db.properties配置檔案中配置的值 -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
mapper對映器
第一種載入方式:通過resource載入單個對映檔案
xml配置
<configuration>
<mappers>
<mapper resource="sqlmap/User.xml" />
</mappers>
</configuration>
第二種載入方式:通過mapper介面載入單個mapper
特別注意的是:通過mapper介面載入單個對映檔案
遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中
上邊規範的前提是:使用的是mapper代理方法
配置檔案
<configuration>
<mappers>
<mapper class="org.mybatis.mapper.UserMapper"/>
</mappers>
</configuration>
第三種載入方式:批量載入mapper(推薦使用)
批量載入mapper指定mapper介面的包名,mybatis自動掃描包下邊所有mapper介面進行載入
遵循一些規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中
上邊規範的前提是:使用的是mapper代理方法
<configuration>
<mappers>
<package name="cn.itcast.mybatis.mapper" />
</mappers>
</configuration>
mybatis預設支援別名
sql對映XML檔案
MyBatis真正強大之處就在這些對映語句,也就是它的魔力所在。對於它的強大功能,SQL映射檔案的配置卻非常簡單
•cache–在特定的名稱空間配置快取。
•cache-ref–引用另外一個名稱空間配置的快取.
•resultMap–最復雜也是最強大的元素,用來描述如何從數據庫結果集裡加載對象。
•parameterMap–不推薦使用!在舊的版本裡使用的映射配置,這個元素在將來可能會被刪除,因此不再進行描述。
•sql–能夠被其它語句重用的SQL塊。
•insert–INSERT映射語句
•update–UPDATE對映語句
•delete–DELEETE映射語句
select–SELECT映射語句 接下來的章節將會對每一個元素進行描述。相關推薦
Mybatis(1、核心配置檔案、Properties、Settings、typeAliases...)
此章主要介紹sqlMapConfiguragion.xml的核心配置屬性。 mybatis、mappers、Environments、ObjectFactory、typeHandlers、Proper
MyBatis基本要素---核心配置檔案
今天就簡單的敘述下MyBatis的核心配置檔案吧~~ configuration 配置 properties 可以配置在java屬性配置檔案中 set
Mybatis學習筆記-核心配置檔案概述
properties Mybatis核心配置檔案包含了資料庫連線的核心配置和mybatis框架的基礎配置,是mybatis的核心描述檔案。 下面逐一介紹該配置檔案中的常用配置。 1.properties標籤 該標籤常用於定義mybatis環境的常量值
活動1(活動在配置檔案的註冊,Menu,活動的切換、銷燬,活動間資料的傳遞)
活動是Android平臺上應用程式的基本構建塊之一。它們充當使用者與應用程式互動的入口點,也是使用者如何在應用程式中導航(如“後退”按鈕)或應用程式之間(與“最近”按鈕一樣)的核心。 一.在AndroidManifest中註冊活動 活動的註冊宣告放在<application>標籤
2、配置檔案config.properties及瀏覽器啟動
配置檔案如下: 瀏覽器啟動選擇: 新建BrowserEngine.java檔案,程式碼如下: package framework;import java.io.FileInputStream;import java.io.IOException;import java.io.InputSt
myBatis 配置檔案 批量操作(增、刪、改)操作(資料庫 oracle 11g)
1、更新 <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="
Linkerd 2.1 釋出,路由級指標、服務配置檔案、UI 改進
Linkerd 2.1 釋出了,Linkerd 是一個提供彈性雲端原生應用服務網格(Service Mesh)的開源專案,也是面向微服務的開源 RPC 代理,它的核心是一個透明代理。 此版本更新亮點包括路由級別指標、服務配置檔案和改進的儀表板 UI,還添加了一些
兩種配置Servlet的IP地址對映:1註解、2配置檔案
1.建立專案 建立 servlet_test 動態web專案。 建立時點選 next, 勾選如下: 2.建立 test.java類 test.java 內容: 第一種:註解 – 設定IP地址對映
springcloud1、spring+mybatis+mysql的yml配置檔案
server: port: 8001 mybatis: config-location: classpath:mybatis/mybatis.cfg.xml # mybati
1、redis配置檔案引數
Redis服務的配置檔案,可以根據需要進行配置 引數說明 daemonize:是否以後臺daemon方式執行 pidfile:pid檔案位置 port:監聽的埠號 timeout:請求超時時間 loglevel:log資訊級別 logfile:log檔案位置 database
pkg-config的安裝:1、執行配置檔案進行系統配置 : ./configure時出錯
configure: error: Either a previously installed pkg-config or "glib-2.0 >= 2.16" could not be found.解決方法:./configure --with-internal-gl
使用wifi網絡卡筆記1----網絡卡選型、開發環境搭建、核心配置
| Location: | | -> Device Drivers
Spring的核心配置檔案、核心類、工作流程?
1.配置核心檔案 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://
Java中讀取配置檔案(properties、xml)
1. 利用java.util提供的工具類Properties - 首先我這邊有個file.properties檔案 - 然後去讀取這個檔案
spring、hibernate整合核心配置檔案applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w
Spring 定時器配置 基於配置檔案 (使用 Spring3.2 、 quartz-1.6.5)
Spring 配置檔案 quartz-1.6.5.jar <!-- time start --> <bean id="quartzJob" class="com.anubi
1、Spring原始碼分析1之讀取配置檔案
1、XMLBeanFcatory BeanFactory bf = new XmlBeanFactory(new ClassPa
nginx、thinkphp3.2、linux配置檔案配置
nginx.conf配置檔案: server { listen 9001; server_name 127
1、Maven配置多環境開發(dev、beta、prod)
我們在線上開發的時候不免要用到多個環境開發,一種的開發環境,一種是測試環境,還有就是生產環境,我們在開發的時候不可能直接用線上的環境進行修改,因為這樣會帶來很多無可預知的麻煩,所以我們要進行環境隔離~ <build> </build>裡面新增下面引數,設定Ma
Mybatis核心配置檔案SqlMapConfig.xml
配置內容: SqlMapConfig.xml中配置的內容和順序如下: 1.properties(屬性) 2.settings(全域性配置引數) 3.typeAliases(類型別名) 4.typeHandlers(型別處理器) 5.objectFactory(物件工廠) 6.pl