最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析MyBatis foreach標(biāo)簽

 更新時(shí)間:2021年09月29日 10:17:07   作者:JD強(qiáng)子  
Mybatis foreach 標(biāo)簽用于循環(huán)語句,它很好的支持了數(shù)據(jù)和 List、set 接口的集合,并對(duì)此提供遍歷的功能,本文給大家介紹MyBatis foreach標(biāo)簽的相關(guān)知識(shí),感興趣的朋友一起看看吧

前面我們學(xué)習(xí)了如何使用 Mybatis if、where、trim 等動(dòng)態(tài)語句來處理一些簡(jiǎn)單的查詢操作。對(duì)于一些 SQL 語句中含有 in 條件,需要迭代條件集合來生成的情況,可以使用 foreach 來實(shí)現(xiàn) SQL 條件的迭代。

Mybatis foreach 標(biāo)簽用于循環(huán)語句,它很好的支持了數(shù)據(jù)和 List、set 接口的集合,并對(duì)此提供遍歷的功能。語法格式如下。

在這里插入圖片描述

SELECT * FROM product_ 
 	WHERE ID in
			<foreach item="item" index="index" collection="list"
    			open="(" separator="," close=")">
      		             #{item}
			</foreach>

如例,如圖查詢出id等于1,3,5的數(shù)據(jù)出來。

在這里插入圖片描述

foreach 標(biāo)簽主要有以下屬性,說明如下。

  • item:表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名。
  • index:指定一個(gè)名字,表示在迭代過程中每次迭代到的位置。
  • open:表示該語句以什么開始(既然是 in 條件語句,所以必然以(開始)。
  • separator:表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔符(既然是 in 條件語句,所以必然以,作為分隔符)。
  • close:表示該語句以什么結(jié)束(既然是 in 條件語句,所以必然以)開始)。

使用 foreach 標(biāo)簽時(shí),最關(guān)鍵、最容易出錯(cuò)的是 collection 屬性,該屬性是必選的,但在不同情況下該屬性的值是不一樣的,主要有以下 3 種情況:

  • 如果傳入的是單參數(shù)且參數(shù)類型是一個(gè) List,collection 屬性值為 list。
  • 如果傳入的是單參數(shù)且參數(shù)類型是一個(gè) array 數(shù)組,collection 的屬性值為 array。
  • 如果傳入的參數(shù)是多個(gè),需要把它們封裝成一個(gè) Map,當(dāng)然單參數(shù)也可以封裝成 Map。Map 的 key 是參數(shù)名,collection 屬性值是傳入的 List 或 array 對(duì)象在自己封裝的 Map 中的 key。

在使用 foreach 標(biāo)簽時(shí),應(yīng)提前預(yù)估一下 collection 對(duì)象的長(zhǎng)度。因?yàn)榇罅繑?shù)據(jù)的 in 語句會(huì)影響性能,且還有一些數(shù)據(jù)庫會(huì)限制執(zhí)行的 SQL 語句長(zhǎng)度。

使用foreach元素查詢用戶信息

現(xiàn)有 website 表包含以下記錄。

+----+----------------+----------------------------+-----+---------+---------------------+
| id | name           | url                        | age | country | createtime          |
+----+----------------+----------------------------+-----+---------+---------------------+
|  1 | 編程幫         | https://www.biancheng.net/ |  10 | CN      | 2021-02-23 10:20:40 |
|  2 | C語言中文網(wǎng)    | http://c.biancheng.net/    |  12 | CN      | 2021-03-08 11:23:27 |
|  3 | 百度           | https://www.baidu.com/     |  18 | CN      | 2021-03-08 11:23:53 |
|  4 | 淘寶           | https://www.taobao.com/    |  17 | CN      | 2021-03-10 10:33:54 |
|  5 | Google         | https://www.google.com/    |  23 | US      | 2021-03-10 10:34:34 |
|  6 | GitHub         | https://github.com/        |  13 | US      | 2021-03-10 10:34:34 |
|  7 | Stack Overflow | https://stackoverflow.com/ |  16 | US      | 2021-03-10 10:34:34 |
|  8 | Yandex         | http://www.yandex.ru/      |  11 | RU      | 2021-03-10 10:34:34 |
+----+----------------+----------------------------+-----+---------+---------------------+

WebsiteMapper.xml 中代碼如下。

<!--使用foreach元素查詢用戶信息-->
<select id="selectWebsite"
    parameterType="net.biancheng.po.Website"
    resultType="net.biancheng.po.Website">
    SELECT id,name,url,age,country
    FROM website WHERE age in
    <foreach item="age" index="index" collection="list" open="("
        separator="," close=")">
        #{age}
    </foreach>
</select>

WebsiteMapper 類中相應(yīng)方法如下。

public List<Website> selectWebsite(List<Integer> ageList);

測(cè)試代碼如下。

public class Test {
    public static void main(String[] args) throws IOException {
        // 讀取配置文件mybatis-config.xml
        InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根據(jù)配置文件構(gòu)建
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
        // 通過SqlSessionFactory創(chuàng)建SqlSession
        SqlSession ss = ssf.openSession();
        List<Integer> ageList = new ArrayList<Integer>();
        ageList.add(10);
        ageList.add(12);
        List<Website> siteList = ss.selectList("net.biancheng.mapper.WebsiteMapper.selectWebsite", ageList);
        for (Website ws : siteList) {
            System.out.println(ws);
        }
    }
}

輸出結(jié)果如下。

在這里插入圖片描述

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

相關(guān)文章

  • Java異步非阻塞編程的幾種方式總結(jié)

    Java異步非阻塞編程的幾種方式總結(jié)

    這篇文章主要介紹了Java異步非阻塞編程的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringBoot同時(shí)啟動(dòng)不同端口圖示解析

    SpringBoot同時(shí)啟動(dòng)不同端口圖示解析

    這篇文章主要介紹了SpringBoot同時(shí)啟動(dòng)不同端口圖示解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 淺析SpringBoot多數(shù)據(jù)源實(shí)現(xiàn)方案

    淺析SpringBoot多數(shù)據(jù)源實(shí)現(xiàn)方案

    現(xiàn)在很多項(xiàng)目的開發(fā)過程中,可能涉及到多個(gè)數(shù)據(jù)源,像讀寫分離的場(chǎng)景,或者因?yàn)闃I(yè)務(wù)復(fù)雜,導(dǎo)致不同的業(yè)務(wù)部署在不同的數(shù)據(jù)庫上,那么這樣的場(chǎng)景,我們應(yīng)該如何在代碼中簡(jiǎn)潔方便的切換數(shù)據(jù)源呢,本文介紹SpringBoot多數(shù)據(jù)源實(shí)現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Java檢測(cè)線程中斷狀態(tài)的方法示例

    Java檢測(cè)線程中斷狀態(tài)的方法示例

    這篇文章主要介紹了Java檢測(cè)線程中斷狀態(tài)的方法,結(jié)合實(shí)例形式分析了java針對(duì)線程中斷狀態(tài)檢測(cè)的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • 淺析JAVA常用JDBC連接數(shù)據(jù)庫的方法總結(jié)

    淺析JAVA常用JDBC連接數(shù)據(jù)庫的方法總結(jié)

    本篇文章是對(duì)在JAVA中常用JDBC連接數(shù)據(jù)庫的方法進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
    2013-07-07
  • Java Lambda表達(dá)式和函數(shù)式接口實(shí)例分析

    Java Lambda表達(dá)式和函數(shù)式接口實(shí)例分析

    這篇文章主要介紹了Java Lambda表達(dá)式和函數(shù)式接口,結(jié)合實(shí)例形式分析了Java8 Lambda表達(dá)式和函數(shù)式接口相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • Java并發(fā)系列之Semaphore源碼分析

    Java并發(fā)系列之Semaphore源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之Semaphore源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • springBoot2.X配置全局捕獲異常的操作

    springBoot2.X配置全局捕獲異常的操作

    這篇文章主要介紹了springBoot2.X配置全局捕獲異常的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié)

    java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié)

    這篇文章主要介紹了java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot 監(jiān)控管理模塊actuator沒有權(quán)限的問題解決方法

    SpringBoot 監(jiān)控管理模塊actuator沒有權(quán)限的問題解決方法

    這篇文章主要介紹了SpringBoot 監(jiān)控管理模塊actuator沒有權(quán)限的問題解決方法,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

广昌县| 库伦旗| 安吉县| 平远县| 鸡泽县| 灌阳县| 宁蒗| 龙州县| 鄄城县| 黄陵县| 万年县| 霍山县| 新野县| 昭平县| 清远市| 土默特右旗| 泸西县| 武夷山市| 上饶市| 望奎县| 淮滨县| 廊坊市| 通海县| 沅江市| 三穗县| 习水县| 东兴市| 苏尼特左旗| 上犹县| 达尔| 通海县| 文水县| 沂源县| 嵊州市| 陆河县| 莎车县| 临朐县| 太保市| 平原县| 永顺县| 犍为县|