nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘id‘ not found. Available

1. 复现错误


今天写好批量删除接口,如下代码所示:


	/**
	 * 批量删除
	 * @param map{ids}
	 * @return R
	 */

	@Operation(summary = "批量删除", description = "批量删除")
	@SysLog("批量删除")
	@DeleteMapping("/ids")
	@PreAuthorize("@pms.hasPermission('archsys_sysRecordTypeCorresponding_delete')")
	public R deleteByIds(@RequestBody Map<String, Object> map) {
		List<Long> ids = (List<Long>) map.get("ids");
		return R.ok(sysRecordTypeCorrespondingService.deleteByIds(ids));
	}
/**
	 * 通过id批量删除
	 * @param ids
	 * @return
	 */
	@Override
	public Boolean deleteByIds(List<Long> ids) {
		return sysRecordTypeCorrespondingMapper.deleteById(ids);
	}
/**
	 * 通过id批量删除
	 * @param ids
	 * @return
	 */
	Boolean deleteById(@Param("ids") List<Long> ids);
<delete id="deleteById" >
        DELETE FROM sys_recordtypecorresponding
        WHERE id IN
        <foreach collection="ids" item="item" index="index" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </delete>

启动项目,使用postman测试,却报出如下错误:

2. 解决错误

nested exception is org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [ids, param1] 

嵌套异常是 org.apache.ibatis.binding.BindingException:找不到参数 'id'。可用参数为 [ids, param1]

根据错误信息ibatis.binding.BindingException可知,这是mybatis框架报出的错误。

但凡报出nested exception is org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found此类错误,一般都是xxxMapper.java类中的方法形参名称和xxxMapper.xml配置文件中的占位符名称不一致导致的,可以有如下两种解决方法:

  1. 修改xxxMapper.xml配置文件中的占位符名称,使其和xxxMapper.java类中@param注解参数一致。
  2. 修改xxxMapper.java类中@param注解参数,使其和xxxMapper.xml配置文件中的占位符保持一致。
     

此处解释@Param注解的作用,当我们的sql中需要多个参数时。Mybatis会将参数列表中的参数封装成一个Map进行传递,这个过程是通过@Param来实现的。

@Param注解括号中的值会作为keyvalue就是参数实际的值。

 解析参数的时候会按照@Param中定义的key获取对应的值,如下代码所示:

void insertNewAdminRelationship(
	@Param("adminId") Integer adminId, 
	@Param("roleIdList") List<Integer> roleIdList
);

这样MyBayis传递的是就是一个{"adminId":adminId,"roleIdList":roleIdList}的形式,当sql运行的时候取值的方式就是通过get("roleIdList")来获取值的。

当然我的代码是没问题的但是我运行postman就是报错,研究了很久发现了问题

 创建文件的时候搞错了文件名

3.文末总结

映射关系在映射的时候注意参数一致

一定注意文件名一致

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值