• Mybatis中XML中传不同类型的参数时,collection注意事项


    类似JAVA中的for循环,可以遍历集合或数组。 有如下属性:

    collection :遍历的对象类型(数组、List、Map)
    open :表示该语句以什么开始,常用 “(”;
    close : 表示以什么结束,常用 “)”。
    separator :表示在每次进行迭代之间以什么符号作为分隔符,常用 “,”;
    item :表示集合中每一个元素进行迭代时的别名,随便起的变量名,遍历 map 时表示键值对的值。
    index :遍历 List 、数组时表示遍历的索引位置,遍历 map 时表示键值对的键。

    collection 属性是在使用foreach的时候最容易出错的,该属性是必须指定的,但是在不同场景下,该属性的配置是不一样的,常用的主要有3种情况:

    1.标签迭代Array数组

    collection传入array即可!

    1. // 4.批量删除指定id的一些数据,测试动态SQL的标签,遍历Array
    2. // 按给定的id值进行批量删除数据,传入一个数组,数组中包含要删掉的id值
    3. // 系统的删除语句:delete from user where id in(12,13,14,16,17,18)
    4. // 用途:测试标签,遍历Array数组
    5. void deleteBatch(int[] ids);
    1. <delete id="deleteBatch" parameterType="int">
    2. delete from user
    3. <where>
    4. <foreach collection="array" open="id IN(" close= ")" separator="," item="id">
    5. #{id}
    6. foreach>
    7. where>
    8. delete>

    2.标签迭代List

    遍历List和Set的方法是一样的,这里使用 遍历List集合进

    行批量添加,collection传入list即可!

    1. // 5.批量插入数据,测试动态SQL的标签,遍历Collection
    2. // 系统插入语句:insert into user(username,sex,address) values(),(),()
    3. // 批量新增方法,测试标签,遍历Collection集合
    4. void insertBatch(List user);
    1. <insert id="insertBatch" parameterType="User">
    2. insert into user(username,sex,address) values
    3. <foreach collection="list" item="user" separator=",">
    4. (#{user.username},#{user.sex},#{user.adddress})
    5. foreach>
    6. insert>

    3.标签迭代Map

    注意:1.collection:传入的不是遍历的对象类型map,List、Set、Array传入的类型分别是list、set、array,但Map集合传入的不是map,而是持久层接口中定义的参数名 如:@Param("queryMap")

    1. // 6.多条件查询:批量查询方法,测试标签,遍历Map集合
    2. /**
    3. * 多条件查询:批量查询方法,测试标签,遍历Map集合
    4. * @param map 查询的条件键值对 键:属性名 值:出入要查询的属性名
    5. * 系统的查询语句:select * from user where username = ? and sex = ?
    6. * @return
    7. * @Param:为参数起别名
    8. */
    9. List findUser(@Param("queryMap") Map map);
    1. <select id="findUser" parameterType="map" resultType="User">
    2. select * from user
    3. <where>
    4. <foreach collection="queryMap" separator="and" index="key" item="value">
    5. ${key} = #{value}
    6. foreach>
    7. where>
    8. select>
  • 相关阅读:
    浅浅懂了一些transformer中的self-attation
    一起学习集合框架之 TreeSet
    【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
    壳聚糖-紫杉醇|Chitosan-Paclitaxel|紫杉醇-PEG-壳聚糖
    华为数通方向HCIP-DataCom H12-821题库(单选题:301-320)
    React源码分析1-jsx转换及React.createElement
    编程之路:蓝桥杯备赛指南
    springcloud整合seata
    无监督学习的集成方法:相似性矩阵的聚类
    阿里首次公开企业级 SpringBoot 实战进阶笔记
  • 原文地址:https://blog.csdn.net/m0_51697147/article/details/126686680