MyBatis BindingException 绑定异常
MyBatis Java About 809 words报错信息
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集合中,以两种方式进行存储:
- 以
arg0、arg1...为键,以参数为值。 - 以
param1、param2...为键,以参数为值。
因此:只需要通过#{}和${}以键的方式访问值即可。
Map 集合
参数有多个时,可以手动将这些参数放在Map中存储,只需要通过#{}和${}以键的方式访问值即可。
实体类型
只需要通过#{}和${}以属性的方式访问属性值即可。
使用 @Param 注解参数
MyBatis会将这些参数放在一个Map集合中,以两种方式进行存储:
- 以
@Param注解的值为键,以参数为值。 - 以
param1、param2...为键,以参数为值。
因此:只需要通过#{}和${}以键的方式访问值即可。
Views: 3,735 · Posted: 2022-07-16
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...