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

MyBatis的foreach語句詳解

 更新時間:2016年06月26日 15:30:34   作者:小蜜蜂  
這篇文章主要介紹了MyBatis的foreach語句詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

foreach的主要用在構(gòu)建in條件中,它可以在SQL語句中進行迭代一個集合。foreach元素的屬性主要有 item,index,collection,open,separator,close。item表示集合中每一個元素進行迭代時的別名,index指 定一個名字,用于表示在迭代過程中,每次迭代到的位置,open表示該語句以什么開始,separator表示在每次進行迭代之間以什么符號作為分隔 符,close表示以什么結(jié)束,在使用foreach的時候最關(guān)鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況 下,該屬性的值是不一樣的,主要有一下3種情況:

1. 如果傳入的是單參數(shù)且參數(shù)類型是一個List的時候,collection屬性值為list

2. 如果傳入的是單參數(shù)且參數(shù)類型是一個array數(shù)組的時候,collection的屬性值為array

3. 如果傳入的參數(shù)是多個的時候,我們就需要把它們封裝成一個Map了,當(dāng)然單參數(shù)也可以封裝成map,實際上如果你在傳入?yún)?shù)的時候,在breast里面也是會把它封裝成一個Map的,map的key就是參數(shù)名,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map里面的key

下面分別來看看上述三種情況的示例代碼:

1.單參數(shù)List的類型:

<select id="dynamicForeachTest" resultType="Blog">
select * from t_blog where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>

上述collection的值為list,對應(yīng)的Mapper是這樣的

public List<Blog> dynamicForeachTest(List<Integer> ids);

測試代碼:

@Test
public void dynamicForeachTest() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(3);
ids.add(6);
List<Blog> blogs = blogMapper.dynamicForeachTest(ids);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}

2.單參數(shù)array數(shù)組的類型:

<select id="dynamicForeach2Test" resultType="Blog">
select * from t_blog where id in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>

上述collection為array,對應(yīng)的Mapper代碼:

public List<Blog> dynamicForeach2Test(int[] ids);

對應(yīng)的測試代碼:

@Test
public void dynamicForeach2Test() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
int[] ids = new int[] {1,3,6,9};
List<Blog> blogs = blogMapper.dynamicForeach2Test(ids);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}

3.自己把參數(shù)封裝成Map的類型

<select id="dynamicForeach3Test" resultType="Blog">
select * from t_blog where title like "%"#{title}"%" and id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>

上述collection的值為ids,是傳入的參數(shù)Map的key,對應(yīng)的Mapper代碼:

public List<Blog> dynamicForeach3Test(Map<String, Object> params);

對應(yīng)測試代碼:

@Test
public void dynamicForeach3Test() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
final List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(2);
ids.add(3);
ids.add(6);
ids.add(7);
ids.add(9);
Map<String, Object> params = new HashMap<String, Object>();
params.put("ids", ids);
params.put("title", "中國");
List<Blog> blogs = blogMapper.dynamicForeach3Test(params);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}

以上所述是小編給大家介紹的MyBatis的foreach語句詳解的相關(guān)知識,希望對大家有所幫助!

相關(guān)文章

  • Spring?Cloud?Hystrix的基本用法大全

    Spring?Cloud?Hystrix的基本用法大全

    這篇文章主要介紹了Spring?Cloud?Hyxtrix的基本使用,它是Spring Cloud中集成的一個組件,在整個生態(tài)中主要為我們提供服務(wù)隔離,服務(wù)熔斷,服務(wù)降級功能,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Java魔法值處理的四種方式

    Java魔法值處理的四種方式

    這篇文章主要介紹了Java魔法值處理的四種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java線程狀態(tài)及jstack命令詳解

    Java線程狀態(tài)及jstack命令詳解

    jstack是Java虛擬機(JVM)提供的一個非常有用的命令行工具,它允許開發(fā)人員和系統(tǒng)管理員在運行時獲取Java應(yīng)用程序的線程堆棧跟蹤,在某些情況下,可能需要以管理員或root用戶的身份運行jstack命令,這篇文章主要介紹了Java線程狀態(tài)及jstack命令詳解,需要的朋友可以參考下
    2024-03-03
  • WebService教程詳解(一)

    WebService教程詳解(一)

    WebService,顧名思義就是基于Web的服務(wù)。它使用Web(HTTP)方式,接收和響應(yīng)外部系統(tǒng)的某種請求,接下來通過本文給大家介紹WebService教程詳解(一),對webservice教程感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • Java中的JSONObject使用及錯誤處理詳解

    Java中的JSONObject使用及錯誤處理詳解

    這篇文章主要給大家介紹了關(guān)于Java中的JSONObject使用及錯誤處理的相關(guān)資料,文中講解了Java中的JSONObject創(chuàng)建、基本操作、高級特性和錯誤處理,通過示例代碼和方法說明,使讀者能夠理解和掌握J(rèn)SONObject的使用技巧,需要的朋友可以參考下
    2024-12-12
  • Spring超詳細講解注解開發(fā)

    Spring超詳細講解注解開發(fā)

    Spring是輕代碼而重配置的框架,配置比較繁重,影響開發(fā)效率,所以注解開發(fā)是一種趨勢。本文將通過示例為大家詳細講講Spring如何實現(xiàn)注解開發(fā),感興趣的可以學(xué)習(xí)一下
    2022-08-08
  • Java實現(xiàn)的RSA加密解密算法示例

    Java實現(xiàn)的RSA加密解密算法示例

    這篇文章主要介紹了Java實現(xiàn)的RSA加密解密算法,結(jié)合實例形式分析了java RAS加密解密算法的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • Java學(xué)習(xí)筆記之Maven篇

    Java學(xué)習(xí)筆記之Maven篇

    今天來回顧下Java學(xué)習(xí)筆記,文中對maven的核心,maven的結(jié)構(gòu)以及maven能做什么都作出了詳細的解釋,,需要的朋友可以參考下
    2021-05-05
  • IntelliJ IDEA 2020.3 重大特性(新功能一覽)

    IntelliJ IDEA 2020.3 重大特性(新功能一覽)

    這篇文章主要介紹了IntelliJ IDEA 2020.3 重大特性(新功能一覽),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • JVM運行時數(shù)據(jù)區(qū)原理解析

    JVM運行時數(shù)據(jù)區(qū)原理解析

    這篇文章主要介紹了JVM運行時數(shù)據(jù)區(qū)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論

边坝县| 越西县| 尉氏县| 赣州市| 璧山县| 大悟县| 南汇区| 江川县| 安吉县| 彭州市| 呈贡县| 晋州市| 张家界市| 称多县| 全椒县| 霍林郭勒市| 文水县| 澄迈县| 广东省| 凉城县| 五河县| 通渭县| 阿尔山市| 察隅县| 平塘县| 孝昌县| 射阳县| 黑水县| 通渭县| 田东县| 永善县| 西峡县| 登封市| 南城县| 揭东县| 金堂县| 洮南市| 磐石市| 集安市| 双牌县| 仙游县|