nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘某字段‘ not found. Available

出错了!!!

nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘某字段‘ not found. Available_第1张图片

出错信息:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [dish, now, param1, param2]

解决方法:

使用 @Param 注解(推荐)

  • 在 Mapper 接口方法的每个参数前添加 @Param 注解,指定参数名称
  • 在 XML 文件中使用 @Param 指定的名称引用参数
// Mapper 接口
void updateDishes(@Param("dish") DishDTO dishDTO, @Param("now") LocalDateTime now);

// XML 文件

    name = #{dish.name}

使用 Map 封装参数

  • 将多个参数封装到一个 Map 中传递
// Service 层
Map params = new HashMap<>();
params.put("dish", dishDTO);
params.put("now", LocalDateTime.now());
dishesMapper.updateDishes(params);

// Mapper 接口
void updateDishes(Map params);
注意事项
  1. @RequestParam vs @RequestBody

    • @RequestParam 用于接收 URL 参数(GET 请求)
    • @RequestBody 用于接收 JSON 格式的请求体(POST/PUT 请求)
    • 对于复杂对象,通常使用 @RequestBody
  2. XML 中参数引用方式

    • 如果使用 @Param,XML 中使用 @Param 指定的名称
    • 如果使用对象,XML 中使用对象的属性名
    • 如果使用 Map,XML 中使用 Map 的键名

你可能感兴趣的:(apache,程序设计)