亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis select標簽的使用示例

 更新時間:2023年10月07日 10:28:00   作者:小日子呀  
MyBatis中,select 標簽是最常用也是功能最強大的 SQL 語言,用于執(zhí)行查詢操作,本文就來介紹了MyBatis select標簽的使用示例,具有一定的參考價值,感興趣的可以了解一下

MyBatis 中,select 標簽是最常用也是功能最強大的 SQL 語言,用于執(zhí)行查詢操作,select 示例語句如下。

<select id="selectAllWebsite" resultType="net.cc.po.Website" parameterType="string">
    SELECT id,NAME,url FROM website WHERE NAME LIKE CONCAT ('%',#{name},'%')
</select>

以上是一個 id 為 selectAllWebsite 的映射語句,參數(shù)類型為 string,返回結(jié)果類型為 Website 

執(zhí)行 SQL 語句時可以定義參數(shù),參數(shù)可以是一個簡單的參數(shù)類型,例如 int、float、String;也可以是一個復(fù)雜的參數(shù)類型,例如 JavaBean、Map 等。MyBatis 提供了強大的映射規(guī)則,執(zhí)行 SQL 后,MyBatis 會將結(jié)果集自動映射到 JavaBean 中。

參數(shù)的傳遞使用#{參數(shù)名},相當于告訴 MyBatis 生成 PreparedStatement 參數(shù)。對于 JDBC,該參數(shù)會被標識為“?”。以上 SQL 語句可以使用 JDBC 實現(xiàn),實現(xiàn)代碼如下。

String sql = "SELECT id,NAME,url FROM website WHERE NAME LIKE CONCAT ('%',?,'%')";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,userName);

?select標簽常用屬性

<select>標簽的常用屬性

屬性名稱描 述備注
id它和 Mapper 的命名空間組合起來使用,是唯一標識符,供 MyBatis 調(diào)用如果命名空間+id不唯一,那么 MyBatis 拋出異常
parameterType表示傳入 SQL 語句傳入?yún)?shù)類型的全限定名或別名。它是一個可選屬性,MyBatis 能推斷出具體傳入語句的參數(shù)支持基本數(shù)據(jù)類型和 JavaBean、Map 等復(fù)雜數(shù)據(jù)類型
resultTypeSQL 語句執(zhí)行后返回的類型(全限定名或者別名)。如果是集合類型,返回的是集合元素的類型,返回時可以使用 resultType 或 resultMap 之一-
resultMap它是映射集的引用,與 <resultMap> 元素一起使用,返回時可以使用 resultType 或 resultMap 之一是 MyBatis 最復(fù)雜的元素,可以配置映射規(guī)則、級聯(lián)、typeHandler 等
flushCache用于設(shè)置在調(diào)用 SQL 語句后是否要求 MyBatis 清空之前查詢的本地緩存和二級緩存默認值為 false,如果設(shè)置為 true,則任何時候只要 SQL 語句被調(diào)用都將清空本地緩存和二級緩存
useCache啟動二級緩存的開關(guān),默認值為 true,表示將査詢結(jié)果存入二級緩存中-
timeout用于設(shè)置超時參數(shù),單位是秒(s),超時將拋出異常-
fetchSize獲取記錄的總條數(shù)設(shè)定默認值是數(shù)據(jù)庫廠商提供的 JDBC 驅(qū)動所設(shè)置的條數(shù)
statementType告訴 MyBatis 使用哪個 JDBC 的 Statement 工作,取值為 STATEMENT(Statement)、 PREPARED(PreparedStatement)、CALLABLE(CallableStatement)-
resultSetType這是針對 JDBC 的 ResultSet 接口而言,其值可設(shè)置為 FORWARD_ONLY(只允許向前訪問)、SCROLL_SENSITIVE(雙向滾動,但不及時更新)、SCROLLJNSENSITIVE(雙向滾動,及時更新)-

傳遞多個參數(shù)

現(xiàn)在需要根據(jù) id 和 name 來模糊查詢網(wǎng)站信息,顯然這涉及到了兩個參數(shù)。給映射器傳遞多個參數(shù)分為以下三種方法。

  • 使用Map傳遞參數(shù)
  • 使用注解傳遞參數(shù)
  • 使用JavaBean傳遞參數(shù)

1. 使用Map傳遞參數(shù)

<!-- 根據(jù)name和url模糊查詢 -->
<select id="selectWebsiteByMap" resultType="net.cc.po.Website" parameterType="map">
    SELECT id,NAME,url FROM website
    WHERE name LIKE CONCAT ('%',#{name},'%')
    AND url LIKE CONCAT ('%',#{url},'%')
</select>

在 WebsiteMapper 接口中,方法如下。

public List<Website> selectWebsiteByMap(Map<String, String> params);

測試 

Map<String,String> paramsMap = new HashMap<String,String>();
paramsMap.put("name","編程");
paramsMap.put("url","cc");
websiteMapper.selectWebsiteByMap(paramsMap);

使用 Map 傳遞參數(shù)雖然簡單易用,但是由于這樣設(shè)置參數(shù)需要鍵值對應(yīng),業(yè)務(wù)關(guān)聯(lián)性不強,開發(fā)人員需要深入到程序中看代碼,造成可讀性下降。

2. 使用注解傳遞參數(shù)

<select id="selectWebsiteByAn" resultType="net.cc.po.Website">
    SELECT id,NAME,url FROM website
    WHERE name LIKE CONCAT ('%',#{name},'%')
    AND url LIKE CONCAT ('%',#{url},'%')
</select>

 接口方法:

public List<Website> selectWebsiteByAn(@Param("name") String name, @Param("url") String url);

當我們把參數(shù)傳遞給后臺時,MyBatis 通過 @Param 提供的名稱就會知道 #{name} 代表 name 參數(shù),提高了參數(shù)可讀性。但是如果這條 SQL 擁有 10 個參數(shù)的查詢,就會造成可讀性下降,增強了代碼復(fù)雜性。

3. 使用JavaBean傳遞參數(shù)

通過 JavaBean 傳遞多個參數(shù)的方式。

<select id="selectWebsiteByAn" resultType="net.cc.po.Website">
    SELECT id,NAME,url FROM website
    WHERE name LIKE CONCAT ('%',#{name},'%')
    AND url LIKE CONCAT ('%',#{url},'%')
</select>
public List<Website> selectWebsiteByAn(Website website);

區(qū)別

以上 3 種方式的區(qū)別如下。

  • 使用 Map 傳遞參數(shù)會導(dǎo)致業(yè)務(wù)可讀性的喪失,繼而導(dǎo)致后續(xù)擴展和維護的困難,所以在實際應(yīng)用中我們應(yīng)該果斷廢棄該方式。
  • 使用 @Param 注解傳遞參數(shù)會受到參數(shù)個數(shù)的影響。當 n≤5 時,它是最佳的傳參方式,因為它更加直觀;當 n>5 時,多個參數(shù)將給調(diào)用帶來困難。
  • 當參數(shù)個數(shù)大于 5 個時,建議使用 JavaBean 方式。

到此這篇關(guān)于MyBatis select標簽的使用示例的文章就介紹到這了,更多相關(guān)MyBatis select標簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • SpringBoot實現(xiàn)配置文件自動加載和刷新的示例詳解

    SpringBoot實現(xiàn)配置文件自動加載和刷新的示例詳解

    在使用Spring Boot開發(fā)應(yīng)用程序時,配置文件是非常重要的組成部分,在不同的環(huán)境中,我們可能需要使用不同的配置文件,當我們更改配置文件時,我們希望應(yīng)用程序能夠自動加載和刷新配置文件,本文我們將探討Spring Boot如何實現(xiàn)配置文件的自動加載和刷新
    2023-08-08
  • 通過Java設(shè)置Word頁面背景色過程詳解

    通過Java設(shè)置Word頁面背景色過程詳解

    這篇文章主要介紹了通過Java設(shè)置Word頁面背景色過程詳解,Word中可以針對不同文檔排版設(shè)計要求來設(shè)置背景設(shè)置顏色。常見的可設(shè)置單一顏色、漸變色或加載圖片來設(shè)置成背景。下面通過Java來設(shè)置以上3種Word頁面背景色,需要的朋友可以參考下
    2019-07-07
  • 基于Elasticsearch5.4的常見問題總結(jié)

    基于Elasticsearch5.4的常見問題總結(jié)

    下面小編就為大家分享一篇基于Elasticsearch5.4的常見問題總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 關(guān)于Struts2的類型轉(zhuǎn)換詳解

    關(guān)于Struts2的類型轉(zhuǎn)換詳解

    本篇文章,小編將為大家介紹關(guān)于Struts2的類型轉(zhuǎn)換詳解,有需要的朋友可以參考一下
    2013-04-04
  • 使用springmvc配置視圖解析器和重定向方式

    使用springmvc配置視圖解析器和重定向方式

    這篇文章主要介紹了使用springmvc配置視圖解析器和重定向方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • mybatis如何使用truncate清空表

    mybatis如何使用truncate清空表

    這篇文章主要介紹了mybatis如何使用truncate清空表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java發(fā)送短信系列之限制日發(fā)送次數(shù)

    java發(fā)送短信系列之限制日發(fā)送次數(shù)

    這篇文章主要為大家詳細介紹了java發(fā)送短信系列之限制日發(fā)送次數(shù),詳細介紹了限制每日向同一個用戶(根據(jù)手機號和ip判斷)發(fā)送短信次數(shù)的方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • idea數(shù)據(jù)庫驅(qū)動下載失敗的問題及解決

    idea數(shù)據(jù)庫驅(qū)動下載失敗的問題及解決

    這篇文章主要介紹了idea數(shù)據(jù)庫驅(qū)動下載失敗的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java流程控制語句最全匯總(上篇)

    Java流程控制語句最全匯總(上篇)

    這篇文章主要介紹了Java流程控制語句最全匯總(上篇),本文章內(nèi)容詳細,通過案例可以更好的理解數(shù)組的相關(guān)知識,本模塊分為了三部分,本次為上篇,需要的朋友可以參考下
    2023-01-01
  • java 集合----Map、Collection

    java 集合----Map、Collection

    HashSet 的 add() 方法添加集合元素時實際上轉(zhuǎn)變?yōu)檎{(diào)用 HashMap 的 put()方法來添加 key-value 對。HashMap 的 put() 方法.hashCode() 判斷返回值相等,如果返回值相等則再通過 equals 比較也返回 true,最終認為key對象是相等的已經(jīng)在HashMap中存在。
    2016-04-04

最新評論