解决Mybatis mappe同时传递 List 和其他参数报错的问题
问题描述:
想要实现这个接口,同时传入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 报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot整合Dubbo与Feign的实现 (无注册中心)
本文主要介绍了springboot整合Dubbo与Feign的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04
springboot项目中mybatis-plus@Mapper注入失败问题
这篇文章主要介绍了springboot项目中mybatis-plus@Mapper注入失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07
spring boot 导出数据到excel的操作步骤(demo)
这篇文章主要介绍了spring boot 导出数据到excel的实现步骤,文中通过打开一个平时练习使用的springboot的demo给大家详细介绍,需要的朋友可以参考下2022-03-03
java实现的连接oracle/mysql数据库功能简单示例【附oracle+mysql数据库驱动包】
这篇文章主要介绍了java实现的连接oracle/mysql数据库功能,结合实例形式分析了java基于jdbc连接Oracle与mysql的相关操作技巧,并附带完整实例代码与oracle+mysql数据库驱动包供读者下载参考,需要的朋友可以参考下2017-10-10
mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势详解
这篇文章主要介绍了mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11


最新评论