查詢語句是 mybatis 中最常用的元素之一——光能把資料存到資料庫中價值並不大,還要能重新取出來才有用,多數應用也都是查詢比修改要頻繁。 mybatis 的基本原則之一是:在每個插入、更新或刪除操作之間,通常會執行多個查詢操作。因此,mybatis 在查詢和結果對映做了相當多的改進。乙個簡單查詢的 select 元素是非常簡單的。比如:
select * from person where id = #
這個語句名為 selectperson,接受乙個 int(或 integer)型別的引數,並返回乙個 hashmap 型別的物件,其中的鍵是列名,值便是結果行中的對應值。
注意引數符號:
#
這就告訴 mybatis 建立乙個預處理語句(preparedstatement)引數,在 jdbc 中,這樣的乙個引數在 sql 中會由乙個「?」來標識,並被傳遞到乙個新的預處理語句中,就像這樣:
// 近似的 jdbc **,非 mybatis **...
string selectperson = "select * from person where id=?";
preparedstatement ps = conn.preparestatement(selectperson);
ps.setint(1,id);
當然,使用 jdbc 就意味著使用更多的**,以便提取結果並將它們對映到物件例項中,而這就是 mybatis 的拿手好戲。引數和結果對映的詳細細節會分別在後面單獨的小節中說明。
select 元素允許你配置很多屬性來配置每條語句的行為細節。
select 元素的屬性
屬性描述
id在命名空間中唯一的識別符號,可以被用來引用這條語句。
parametertype
將會傳入這條語句的引數的類全限定名或別名。這個屬性是可選的,因為 mybatis 可以通過型別處理器(typehandler)推斷出具體傳入語句的引數,預設值為未設定(unset)。
parametermap
用於引用外部 parametermap 的屬性,目前已被廢棄。請使用行內引數對映和 parametertype 屬性。
resulttype
期望從這條語句中返回結果的類全限定名或別名。 注意,如果返回的是集合,那應該設定為集合包含的型別,而不是集合本身的型別。 resulttype 和 resultmap 之間只能同時使用乙個。
resultmap
對外部 resultmap 的命名引用。結果對映是 mybatis 最強大的特性,如果你對其理解透徹,許多複雜的對映問題都能迎刃而解。 resulttype 和 resultmap 之間只能同時使用乙個。
flushcache
將其設定為 true 後,只要語句被呼叫,都會導致本地快取和二級快取被清空,預設值:false。
usecache
將其設定為 true 後,將會導致本條語句的結果被二級快取快取起來,預設值:對 select 元素為 true。
timeout
這個設定是在丟擲異常之前,驅動程式等待資料庫返回請求結果的秒數。預設值為未設定(unset)(依賴資料庫驅動)。
fetchsize
這是乙個給驅動的建議值,嘗試讓驅動程式每次批量返回的結果行數等於這個設定值。 預設值為未設定(unset)(依賴驅動)。
statementtype
可選 statement,prepared 或 callable。這會讓 mybatis 分別使用 statement,preparedstatement 或 callablestatement,預設值:prepared。
resultsettype
forward_only,scroll_sensitive, scroll_insensitive 或 default(等價於 unset) 中的乙個,預設值為 unset (依賴資料庫驅動)。
databaseid
如果配置了資料庫廠商標識(databaseidprovider),mybatis 會載入所有不帶 databaseid 或匹配當前 databaseid 的語句;如果帶和不帶的語句都有,則不帶的會被忽略。
resultordered
這個設定僅針對巢狀結果 select 語句:如果為 true,將會假設包含了巢狀結果集或是分組,當返回乙個主結果行時,就不會產生對前面結果集的引用。 這就使得在獲取巢狀結果集的時候不至於記憶體不夠用。預設值:false。
resultsets
這個設定僅適用於多結果集的情況。它將列出語句執行後返回的結果集並賦予每個結果集乙個名稱,多個名稱之間以逗號分隔。
MyBatis Xml對映檔案之字串替換
預設情況下,使用 格式的語法會導致 mybatis 建立 preparedstatement 引數佔位符並安全地設定引數 就像使用 一樣 這樣做更安全,更迅速,通常也是首選做法,不過有時你就是想直接在 sql 語句中插入乙個不轉義的字串。比如,像 order by,你可以這樣來使用 order by...
對映檔案 Hibernate 對映檔案
乙個物件 關係型對映一般定義在 xml 檔案中。對映檔案指示 hibernate 如何將已經定義的類或類組與資料庫中的表對應起來。儘管有些 hibernate 使用者選擇手寫 xml 檔案,但是有很多任務具可以用來給先進的 hibernate 使用者生成對映檔案。這樣的工具包括xdoclet,mid...
Hive從S3中對映資料檔案以及對映分割槽資料
之前也沒接觸過aws對之不是很熟悉,但最近有需求需要在aws的emr中,用hive去獲取s3桶 或者指定桶內資料夾 內的資料,這裡記錄一下。emr,安裝hadoop集群,hive 1.直接對映資料 直接將s3中的資料檔案對映到hive表,不做任何處理。這個時候直接在hive中建立表的時候指定s3資料...