[mybatis]list的foreach的使用

摘要:
当传入参数为list的时候foreach的使用当参数为一个list的时候方法层:intdeleteAll(Listlist);xml文件中的sql语句deletefromclassifywhereidin˂foreachcollection="list"index="index"item="item"open="("separ
当传入参数为list的时候foreach的使用

当参数为一个list的时候

方法层:

 int deleteAll(List<String> list);
xml文件中的sql语句
<delete   parameterType="list">
  delete from classify
  where id in
   <foreach collection="list" index="index" item="item"
     open="(" separator="," close=")">
     #{item} 
    </foreach>
 </delete>

当参数为多个list方法层

控制层:

[mybatis]list的foreach的使用第1张

执行层

[mybatis]list的foreach的使用第2张

xml文件

[mybatis]list的foreach的使用第3张

基本完成

下面是一些常识:

foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束

collection主要有一下3种情况:

1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可

1.单参数List的类型:


上述collection的值为list,对应的Mapper是这样的
public List dynamicForeachTest(List ids);
测试代码:

2.单参数array数组的类型

1 <select   parameterType="java.util.ArrayList" resultType="Blog">
2   select * from t_blog where id in
3   <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
4     #{item}
5   </foreach>
6 </select>

上述collection为array,对应的Mapper代码:
public List dynamicForeach2Test(int[] ids);
对应的测试代码

3.自己把参数封装成Map的类型

1 <select   parameterType="java.util.HashMap" resultType="Blog">
2     select * from t_blog where title like "%"#{title}"%" and id in
3     <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
4        #{item}
5     </foreach>
6 </select>

上述collection的值为ids,是传入的参数Map的key,对应的Mapper代码:
public List dynamicForeach3Test(Map params);
对应测试代码

版权声明:本文为CSDN博主「withawind」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/withawind/article/details/87252769

免责声明:文章转载自《[mybatis]list的foreach的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇注解提高篇:自定义注解处理器(APT)Makefile系列之一 : 书写规则下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

QList内存释放(看它内部存储的是否是Object,另外还有qDeleteAll)

QList<T> 的释放分两种情况: 1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码 #include <QtCore/QCoreApplication>#include <QList>#include <QString> int main(int argc, char *...

python selenium 基本常用操作

 最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要。因本人水平有限,有不对之处多多包涵!欢迎指正! 一、xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css),谁与争锋  学会了xpath,妈妈再也不用担心我定位不到元素啦 ^_^ # coding:utf-8 import time from seleniu...

Mybatis枚举映射异常

异常描述: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'xxx' from result set. Ca...

取前十条取后十条取区间值-限制取数区间

MySQL: select * from table1 where 1=1 limit 10; SQL Server: 读取前10条:select top (10) * from table1 where 1=1; 读取后10条:select top (10) * from table1 order by id desc; 在SQL Serv...

Eclipse利用Maven快速上手搭建MyBatis

一、what is maven? Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多...

SQLServer查看分区表详细信息

SQL查看分区内记录个数,常规方法需要知道分区函数然后再显示,网上看到一个一句话显示的方法 select convert(varchar(50), ps.name ) aspartition_scheme, p.partition_number, convert(varchar(10), ds2.name ) asfilegroup, con...