SQL 對映檔案

2022-03-07 16:50:51 字數 2934 閱讀 3922

mybatis 真正的力量是在對映語句中。

和對等功能的jdbc來比價,對映檔案節省非常多的**量。

mybatis的構建就是聚焦於sql的。

sql對映檔案有例如以下幾個頂級元素:(按順序)

cache配置給定命名空間的快取。

cache-ref從其它命名空間引用快取配置。

resultmap最複雜,也是最有力量的元素。用來描寫敘述怎樣從資料庫結果集中來載入你的物件。

parametermap已經被廢棄了!老式風格的引數對映。

內聯引數是首選,這個元素可能在將來被移除。

sql能夠重用的sql塊,也能夠被其它語句引用。

insert對映插入語句。

update對映更新語句。

delete對映刪除語句。

select對映查詢語句。

以下就具體描寫敘述一些元素:

1、select

查詢語句是使用 mybatis 時最經常使用的元素之中的乙個。

select * from person where id = #

使用乙個int(或integer)型別的引數,並返回乙個hashmap型別的物件,當中的鍵是列名,值是列相應的值。

注意引數凝視:

#select 元素有非常多屬性同意你配置,來決定每條語句的作用細節。

parametertype=」int」 將會傳入這條語句的引數類的全然限定名或別名。

parametermap=」deprecated」 (已廢棄) resulttype=」hashmap」 從這條語句中返回的期望型別的類的全然限定名或別名。

注意集合情形。那應該是集合能夠包括的型別,而不能是集合本身。

使用resulttype或resultmap,但不能同一時候使用。

resultmap=」personresultmap」 命名引用外部的resultmap。返回map是mybatis最具力量的特性,對其有乙個非常好的理解的話,很多複雜對映的情形就能被攻克了。使用 resultmap 或 resulttype,但不能同一時候使用。 flushcache=」false」 將其設定為true。不論語句什麼時候被呼叫,都會導致快取被清空。預設值: false。

usecache=」true」 將其設定為 true。將會導致本條語句的結果被快取。預設值: true。

timeout=」10000」 這個設定驅動程式等待資料庫返回請求結果,並丟擲異常時間的最大等待值。預設不設定(驅動自行處理)。 fetchsize=」256」 這是暗示驅動程式每次批量返回的結果行數。預設不設定(驅動自行處理)。 statementtype=」prepared」 statement,prepared 或 callable 的一種。這會讓 mybatis使用選擇使用 statement, preparedstatement 或 callablestatement。預設值: prepared。 resultsettype=」forward_only」 forward_only|scroll_sensitive|scroll_insensitive中的一種。預設是不設定(驅動自行處理)。

2、insert。 update, delete

資料變更語句 insert。 update 和 delete 在它們的實現中很相似:

這會讓 mybatis使用選擇使用 statement, preparedstatement 或callablestatement。預設值: prepared。 keyproperty="" (僅對 insert實用)標記乙個屬性, mybatis 會通過 getgeneratedkeys或者通過 insert 語句的 selectkey 子元素設定它的值。

預設:不設定。

usegeneratedkeys="" ( 僅 對 insert 有 用 ) 這 會 告 訴 mybatis 使 用 jdbc 的getgeneratedkeys 方法來取出由資料(比方:像 mysql 和 sqlserver 這種資料庫管理系統的自己主動遞增字段)內部生成的主鍵。預設值: false。 timeout="20000" 這個設定驅動程式等待資料庫返回請求結果,並丟擲異常時間的最大等待值。

預設不設定(驅動自行處理)。 >

以下就是insert, update 和 delete 語句的演示樣例:

insert into author (id,username,password,email,bio) values (#,#,#,#,#)

update author set

username = #,

password = #,

email = #,

bio = #

where id = #

delete from author where id = #

如前所述。插入語句有一點多,它有一些屬性和子元素用來處理主鍵的生成。首先。假設你的資料庫支援自己主動生成主鍵的字段(比方mysql和sqlserver)。那麼你能夠設定 usegeneratedkeys=」true」,並且設定 keyproperty 到你已經做好的目標屬性上。比如。假設上面的 author 表已經對 id 使用了自己主動生成的列型別,那麼語句能夠改動為:

insert into author (username,password,email,bio)

values (#,#,#,#)

3、sql

這個元素能夠被用來定義可重用的sql**段。能夠包括在其它語句中。

select from some_table

where id = #

MyBatis之sql對映檔案

mybatis的強大之處就在於它的sql對映檔案,下面介紹sql對映檔案的幾個頂級元素配置 2 cache 配置給定的命名空間的快取 3 cache ref 從其他冥冥空間的引用快取配置 4 resultmap 用來描述資料庫結果集和物件的對應關係 5 sql 可以重用的sql塊,也可以被其他語句引...

MyBatis 之 對映檔案 動態sql

mybatis 之 對映檔案 動態sql f標籤 作為判斷入參來使用的,如果符合條件,則把if標籤體內的sql拼接上。注意 用 if進行判斷是否為空時,不僅要判斷 null 也要判斷空字串 where標籤 會去掉條件中的第乙個and符號。public class user public class ...

Mybatis之sql對映檔案篇

mybatis之sql對映檔案 用來存放sql語句的配置檔案,需要與同名sql介面繫結,sql語句有著各自的對應標籤 實際值,與該方法的引數名無關,引數名不需要與bean屬性名對應 id delete from tb1 employee where id and gender update tb1 ...