穆穆青风至 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日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图