国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

MyBatis 3 XML映射文件-select

2022-04-08 18:03 更新

查詢語句是 MyBatis 中最常用的元素之一——光能把數(shù)據(jù)存到數(shù)據(jù)庫中價值并不大,還要能重新取出來才有用,多數(shù)應(yīng)用也都是查詢比修改要頻繁。 MyBatis 的基本原則之一是:在每個插入、更新或刪除操作之間,通常會執(zhí)行多個查詢操作。因此,MyBatis 在查詢和結(jié)果映射做了相當(dāng)多的改進(jìn)。一個簡單查詢的 select 元素是非常簡單的。比如:

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

這個語句名為 ?selectPerson?,接受一個 ?int?(或 ?Integer?)類型的參數(shù),并返回一個 ?HashMap ?類型的對象,其中的鍵是列名,值便是結(jié)果行中的對應(yīng)值。

注意參數(shù)符號:

#{id}

這就告訴 MyBatis 創(chuàng)建一個預(yù)處理語句(?PreparedStatement?)參數(shù),在 ?JDBC ?中,這樣的一個參數(shù)在 SQL 中會由一個“?”來標(biāo)識,并被傳遞到一個新的預(yù)處理語句中,就像這樣:

// 近似的 JDBC 代碼,非 MyBatis 代碼...
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);

當(dāng)然,使用 ?JDBC ?就意味著使用更多的代碼,以便提取結(jié)果并將它們映射到對象實例中,而這就是 MyBatis 的拿手好戲。參數(shù)和結(jié)果映射的詳細(xì)細(xì)節(jié)會分別在后面單獨的小節(jié)中說明。

?select ?元素允許你配置很多屬性來配置每條語句的行為細(xì)節(jié)。

<select
  id="selectPerson"
  parameterType="int"
  parameterMap="deprecated"
  resultType="hashmap"
  resultMap="personResultMap"
  flushCache="false"
  useCache="true"
  timeout="10"
  fetchSize="256"
  statementType="PREPARED"
  resultSetType="FORWARD_ONLY">
Select 元素的屬性
屬性 描述
id 在命名空間中唯一的標(biāo)識符,可以被用來引用這條語句。
parameterType 將會傳入這條語句的參數(shù)的類全限定名或別名。這個屬性是可選的,因為 MyBatis 可以通過類型處理器(TypeHandler)推斷出具體傳入語句的參數(shù),默認(rèn)值為未設(shè)置(unset)。
parameterMap 用于引用外部 parameterMap 的屬性,目前已被廢棄。請使用行內(nèi)參數(shù)映射和 parameterType 屬性。
resultType 期望從這條語句中返回結(jié)果的類全限定名或別名。 注意,如果返回的是集合,那應(yīng)該設(shè)置為集合包含的類型,而不是集合本身的類型。 resultType 和 resultMap 之間只能同時使用一個。
resultMap 對外部 resultMap 的命名引用。結(jié)果映射是 MyBatis 最強大的特性,如果你對其理解透徹,許多復(fù)雜的映射問題都能迎刃而解。 resultType 和 resultMap 之間只能同時使用一個。
flushCache 將其設(shè)置為 true 后,只要語句被調(diào)用,都會導(dǎo)致本地緩存和二級緩存被清空,默認(rèn)值:false。
useCache 將其設(shè)置為 true 后,將會導(dǎo)致本條語句的結(jié)果被二級緩存緩存起來,默認(rèn)值:對 select 元素為 true。
timeout 這個設(shè)置是在拋出異常之前,驅(qū)動程序等待數(shù)據(jù)庫返回請求結(jié)果的秒數(shù)。默認(rèn)值為未設(shè)置(unset)(依賴數(shù)據(jù)庫驅(qū)動)。
fetchSize 這是一個給驅(qū)動的建議值,嘗試讓驅(qū)動程序每次批量返回的結(jié)果行數(shù)等于這個設(shè)置值。 默認(rèn)值為未設(shè)置(unset)(依賴驅(qū)動)。
statementType 可選 STATEMENT,PREPARED 或 CALLABLE。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement,默認(rèn)值:PREPARED。
resultSetType FORWARD_ONLY,SCROLL_SENSITIVE, SCROLL_INSENSITIVE 或 DEFAULT(等價于 unset) 中的一個,默認(rèn)值為 unset (依賴數(shù)據(jù)庫驅(qū)動)。
databaseId 如果配置了數(shù)據(jù)庫廠商標(biāo)識(databaseIdProvider),MyBatis 會加載所有不帶 databaseId 或匹配當(dāng)前 databaseId 的語句;如果帶和不帶的語句都有,則不帶的會被忽略。
resultOrdered 這個設(shè)置僅針對嵌套結(jié)果 select 語句:如果為 true,將會假設(shè)包含了嵌套結(jié)果集或是分組,當(dāng)返回一個主結(jié)果行時,就不會產(chǎn)生對前面結(jié)果集的引用。 這就使得在獲取嵌套結(jié)果集的時候不至于內(nèi)存不夠用。默認(rèn)值:false。
resultSets 這個設(shè)置僅適用于多結(jié)果集的情況。它將列出語句執(zhí)行后返回的結(jié)果集并賦予每個結(jié)果集一個名稱,多個名稱之間以逗號分隔。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號