zoukankan      html  css  js  c++  java
  • Mybatis 传入的参数为List

    错误代码:

    mapper接口:

    List<MeetingDeploy> resultTypeList(List<String> codes);
    mapper.xml:
     select * from meeting_deploy where
         meeting_code IN
     <foreach item="item" collection="codes" open="(" separator="," close=")" index="index">
           #{item}
     </foreach>

    报错信息:org.apache.ibatis.binding.BindingException: Parameter ‘codes’ not found. Available parameters are [collection, list]

    错误原因:

    传递一个 List 实例或者数组作为参数对象传给 MyBatis。当你这么做的时 候,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以list为Key值的map。

    (1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .

    (2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .

    (3)如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

    可修改为

    1、mapper接口:

    List<MeetingDeploy> resultTypeList(List<String> codes);
    

     mapper.xml

     select * from hplan_meeting_deploy where
           meeting_code IN
     <foreach item="item" collection="list" open="(" separator="," close=")" index="index">
           #{item}
     </foreach>
    

    2、mapper接口

    List<MeetingDeploy> resultTypeList(@Param("codes") List<String> codes);
    

         mapper.xml

     select * from hplan_meeting_deploy where
            meeting_code IN
     <foreach item="item" collection="codes" open="(" separator="," close=")" index="index">
           #{item}
     </foreach>  

     

  • 相关阅读:
    第十一周项目6-回文&素数(一)
    第十一周项目1-函数版星号图(三) .
    囚徒困境 For BBasic
    第十一周项目5-当年第几天
    第十一周项目4-特殊三位数
    第十一周项目3-程序的多文件组织
    第十一周项目2-求最大公约数
    第十一周项目1-函数版星号图(二)
    第十一周项目1-函数版星号图(一)
    第十周-囚徒困境
  • 原文地址:https://www.cnblogs.com/wongzzh/p/15019188.html
Copyright © 2011-2022 走看看