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: 2,181 · Posted: 2022-07-16
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...