MyBatis完全使用指南

2022-03-12 09:00:52 字數 2761 閱讀 8363

目錄spring環境中mybatis的初始化過程

sql對映

動態sql

mybatis作為乙個輕量的sql對映框架,確實很簡單,但是知識點挺多,實際使用中還是會有時想不起來某個標籤該怎麼寫,所以整理了這篇文章,以備查詢。由於mybatis如此簡單,使得這一篇文章基本把實際使用中常碰到的事情都涵蓋了.

mybatis是什麼

在使用mybatis的專案裡,日誌中往往會出現很多拼接sql語句的log,這其實說明了mybatis底層還是使用jdbc來實現的。在jdbc的基礎上,為了效能考慮,所有的語句都是基於sqlsession。顧名思義,維護這個類的例項其實就是維護了乙個對於某個資料庫的連線的會話,在這個會話裡可以有快取啊什麼之類的。

目前多數開發者還是會使用xml來進行mybatis的配置,包括mybatis的核心配置和sql對映配置。其實和註解一樣,xml本身只不過是乙個元資料的載體,最終起作用的還是mybatis的核心類。其中有這樣幾個比較重要的:

實際情況中mybatis往往是在spring的環境中使用的,mybatis本身並不依賴spring,但是使用spring可以極大的提高開發效率,由於spring進行了控制反轉,所以其中mybatis的初始化過程和正常過程稍稍有些不同:

mybatis包含的內容mybatis也可以使用註解來實現對映,對於簡單的語句,使用註解可能會更加清晰簡單,但是其真正強大的地方還是xml。

select

屬性描述

id此命名空間內的識別符號

parametertype

引數的類的全名或者alias,可選。預設為空。

parametermap

deprecated

resulttype

返回結果的型別全名或alias,如果結果是集合,此型別表示的是集合的成員型別。

resultmap

使用指定的resultmap來對映結果集。resultmap 和 resulttype只能二選一。

flushcache

如果為true,每次呼叫,一級快取和二級快取都會回寫。select語句中預設為false。

usecache

如果為true,結果將在二級快取中快取。select語句中預設為true

timeout

設定超時,若超時則丟擲異常。

fetchsize

嘗試在獲取資料時分批獲取。

statementtype

statement,prepared或者callable. 分別對應jdbc中的statement,preparedstatement和callablestatement respectively。預設prepared.

resultsettype

forward_only,scroll_sensitive或者scroll_insensitive。預設為空。

databaseid

使用特定的databaseidprovider

resultordered

巢狀查詢時使用。

resultsets

多返回集合時使用。

修改語句(insert,update,delete)

這3種語句的屬性基本和上邊select的一樣,insert和update的語句有幾個特殊的屬性如下:

屬性描述

usegeneratedkeys

將使用jdbc的getgeneratedkeys方法來獲取主鍵的值。預設為false。

keyproperty

主鍵。mybatis會將生成的主鍵賦給這個列。聯合主鍵使用逗號隔開。

keycolumn

特定資料庫需要使用。

sql語句段(sql標籤)

標籤可以定義一段sql語句段,可以在其他語句中引入使用。sql標籤可以包含引數。示例如下:

$.id,$.username,$.password 

select

,from some_table t1

cross join some_table t2

引數(property)也可以在refid或者include進來的sql中使用。示例如下:

$table

from

select

field1, field2, field3

#{}${}的區別

型別別名

什麼地方都少不了這種小技巧,可以讓你少打很多字。

resultmap

官方文件上說這個特性是整個mybatis中最強大的特性(沒有之一)。其實它做的就是對映結果集。

cache和cach-ref

使用cache標籤在對映檔案內(某命名空間內)實現二級快取,其所有屬性都有預設值,所以單單乙個標籤就可以生效。cach-ref可以在兩個對映檔案之間共享快取

if

條件判斷,引數為test

choose (巢狀when,otherwise)

多選一,引數為test

trim (where,set)

foreach

迴圈集合輸出,可以迴圈陣列,iterable物件,或者map,如果是map,則index會是key。

#

bind

宣告乙個使用ognl表示式生成的變數,在sql語句中使用。

MyBatis 完全使用指南

mybatis作為乙個輕量的sql對映框架,確實很簡單,但是知識點挺多,實際使用中還是會有時想不起來某個標籤該怎麼寫,所以整理了這篇文章,以備查詢。由於mybatis如此簡單,使得這一篇文章基本把實際使用中常碰到的事情都涵蓋了,包括 mybatis中的一些概念 mybatis包含的內容 sql對映 ...

Ubuntu apt 使用指南

起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...

CImageList使用指南

1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...