解决Mybatis mappe同时传递 List 和其他参数报错的问题

 更新时间:2024年09月11日 11:05:27   作者:严格格  
在使用MyBatis时,如果需要传递多个参数到SQL中,可以遇到参数绑定问题,解决方法包括使用@Param注解和修改mapper.xml配置,感兴趣的朋友跟随小编一起看看吧

问题描述:

想要实现这个接口,同时传入planId和projectPlans,屡次报错。好在一路坎坷,解决了多方bug,最后终于搞定了

 void insertList(@Param("planId") Integer planId, @Param("projectPlans") List<ProjectPlan> projectPlans);

1 刚开始爆绑定失败

后来发现原来是我的xml文件没有写mapper后缀

2 多个参数传值用@Param失败

别人说用这个,但是发现根本不行,

    void insertList(@Param("planId") Integer planId, @Param("projectPlans") List<ProjectPlan> projectPlans);
  <insert id="insertList"  parameterType="java.util.Map">
       insert into nursing_project_plan (plan_id,project_id,execute_time,execute_cycle,
       execute_frequency,create_by, update_by, create_time, update_time,remark) values
       <foreach collection="projectPlans" item="project" separator=",">
           (#{planId},#{project.projectId},#{project.executeTime},#{project.executeCycle},
           #{project.executeFrequency},#{project.createBy},#{project.updateBy},#{project.createTime},#{project.updateTime},#{project.remark}
           )
       </foreach>
   </insert>

解决思路

报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'customerIdList' not found. Available parameters are [arg0, collection, list]
解释:

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

错误代码:
mapper层

 void insertList(List<ProjectPlan>projectPlans );
//这个方法也是会错 void insertList(List<ProjectPlan>projectPlans ,Integer planId);

xml层

   <insert id="insertList"  >
       insert into nursing_project_plan (plan_id,project_id,execute_time,execute_cycle,
       execute_frequency,create_by, update_by, create_time, update_time,remark) values
       <foreach collection="projectPlans" item="project" separator=",">
           (#{planId},#{project.projectId},#{project.executeTime},#{project.executeCycle},
           #{project.executeFrequency},#{project.createBy},#{project.updateBy},#{project.createTime},#{project.updateTime},#{project.remark}
           )
       </foreach>
   </insert>

解决方法

service层
(封装成map)

  Map maps = new HashMap();
        maps.put("projectPlans", projectPlans);
        maps.put("planId", 2);
        nursingProjectPlanMapper.insertList(maps);

mapper层

void insertList( Map maps);

xml层

    <insert id="insertList" parameterType="java.util.Map">
        insert into nursing_project_plan (plan_id,project_id,execute_time,execute_cycle,
        execute_frequency,create_by, update_by, create_time, update_time,remark) values
        <foreach collection="projectPlans" item="project" separator=",">
            (#{planId},#{project.projectId},#{project.executeTime},#{project.executeCycle},
            #{project.executeFrequency},#{project.createBy},#{project.updateBy},#{project.createTime},#{project.updateTime},#{project.remark}
            )
        </foreach>
    </insert>

成功了

在这里插入图片描述

到此这篇关于解决Mybatis mappe同时传递 List 和其他参数报错的问题的文章就介绍到这了,更多相关Mybatis mappe传递 List 报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java之基本数据类型所对应的包装类使用

    java之基本数据类型所对应的包装类使用

    本文介绍了Java中的8种基本数据类型及其对应的包装类,包括包装类的作用、自动装箱和拆箱机制、以及提供的一些实用方法
    2025-12-12
  • SpringBoot集成Redis消息队列的实现示例

    SpringBoot集成Redis消息队列的实现示例

    本文主要介绍了SpringBoot集成Redis消息队列的实现示例,包括配置和消费逻辑,RedisStream提供了高吞吐量、顺序消费和消费组机制等优势,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • java 嵌套类的详解及实例代码

    java 嵌套类的详解及实例代码

    这篇文章主要介绍了java 嵌套类的详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • Spring源码解析之编程式事务

    Spring源码解析之编程式事务

    今天给大家带来的是关于Java Spring的相关知识,文章围绕着Spring编程式事务展开,文中有非常详细的介绍,需要的朋友可以参考下
    2021-06-06
  • springcloud注册hostname或者ip的那些事

    springcloud注册hostname或者ip的那些事

    Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的。这篇文章主要介绍了springcloud注册hostname或者ip,需要的朋友可以参考下
    2019-11-11
  • 浅谈Java线程并发知识点

    浅谈Java线程并发知识点

    本文主要对Java线程并发的知识点进行简单介绍。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • Java必踩的坑之方法中形参、实参传递

    Java必踩的坑之方法中形参、实参传递

    这篇文章主要给大家介绍了关于Java必踩的坑之方法中形参、实参传递的相关资料,以及Java 形参和实参的区别,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • 关于Java中ArrayList的源码分析

    关于Java中ArrayList的源码分析

    这篇文章主要从源码角度带大家深入了解一下Java中ArrayList的构造方法和属性等知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-05-05
  • SpringBoot中@ConfigurationProperties 配置绑定

    SpringBoot中@ConfigurationProperties 配置绑定

    本文主要介绍了SpringBoot中@ConfigurationProperties 配置绑定,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • java多线程实现同步锁卖票实战项目

    java多线程实现同步锁卖票实战项目

    本文主要介绍了java多线程实现同步锁卖票实战项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论