穆穆青风至 2022-03-11 10:50 采纳率: 97.4%
浏览 58
已结题

mybatis相关问题,<foreach>标签

其中的collection标签后面跟的是啥,类型?还是名字?这个是要怎么填的?和接口方法中的参数名及类型有啥关系,我查到的是还可以在接口方法中添加@Param,说是这样里面的值就要和collection的值一致?查阅了不少,一直在测试,一直报错,

img


sql语句

<select id="test_3" parameterType="java.util.ArrayList" resultType="user">
        select * from user
        <where>
            <foreach collection="array" item="age" open="age in (" separator="," close=")"></foreach>
            #{age}
        </where>
    </select>

接口

List<User> test_3(int[] ef);

测试方法

int[] age ={18};
        List<User> userList= mapper.test_3(age);
        for (User user : userList) {
            System.out.println(user.getName());
        }

这里是另一组接口(没加@Param)加sql语句,是能输出东西的,它这又是怎么匹配上的,

<select id="test_2" resultType="user" parameterType="java.util.ArrayList">
        select * from user
        where age in
            <foreach collection="array" item="age" index="index" open="(" separator="," close=")">
                #{age}
            </foreach>
    </select>

List<User> test_2(int[] a);
  • 写回答

5条回答 默认 最新

  • qq_25376897 2022-03-11 11:30
    关注

    mybatis 对集合数组进行了特殊处理,你看成它把参数封装进一个Map里面,(注意:这是针对参数只有一个,且为数组或者集合这一种情况的)

    map.put("list",你的list);
    map.put("array",你的数组);
    它取的时候,是按key来取的。
    所以你用int[] age时,collection只认array。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 修改了问题 3月11日
  • 创建了问题 3月11日

悬赏问题

  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况