Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


MyBatis BindingException 绑定异常

MyBatis Java 大约 809 字

报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found. Available parameters are [yyy, param1]

原因

仅需一个传参(且该参数是一个对象),也使用@Param注解而报错。

错误示范

该方法需要的参数仅有1个,但任然使用@Param注解。

int updateProduct(@Param("product") Product product);

正确示范

该方法需要的参数仅有1个,无需使用@Param注解。

int updateProduct(Product product);

底层原理

可参考以下这个方法

org.apache.ibatis.reflection.ParamNameResolver#getNamedParams

总结

单个字面量类型

可以通过#{}${}任意的名称获取参数值。

多个参数

会将这些参数放在一个Map集合中,以两种方式进行存储:

  1. arg0arg1...为键,以参数为值。
  2. param1param2...为键,以参数为值。

因此:只需要通过#{}${}键的方式访问值即可。

Map 集合

参数有多个时,可以手动将这些参数放在Map中存储,只需要通过#{}${}键的方式访问值即可。

实体类型

只需要通过#{}${}属性的方式访问属性值即可。

使用 @Param 注解参数

MyBatis会将这些参数放在一个Map集合中,以两种方式进行存储:

  1. @Param注解的值为键,以参数为值。
  2. param1param2...为键,以参数为值。

因此:只需要通过#{}${}键的方式访问值即可。

阅读 420 · 发布于 2022-07-16

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批