我立志做一名把细节都说清楚的博主,欢迎关注🎉 ~
原创不易,有帮助还请鼓励个【赞】哦,谢谢无敌可爱帅气又迷人的小哥哥、小姐姐,爱你哦 ❥(^_-)~

报错信息展示:

情况一:

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]

情况二:

org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [product, param1]
### The error may exist in mapper/ProductMapper.xml
### The error may involve com.example1.example2.dao.ProductMapper.updateProduct
### The error occurred while executing an update
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [product, param1]

项目背景:

  • SSM项目

报错还原:

情况一:

// 错误示范:该方法需要传参3个,但没有使用@Param注解。
List<Product> selectAllProduct(Product productCondition,
							   int beginIndex,
							   int pageSize);

情况二:

// 错误示范:该方法需要的参数仅有1个,但任然使用@Param注解。
int updateProduct(@Param("product") Product product);

报错原因:

情况一:

  • 项目DAO层方法传输参数达到2个及2个以上,程序无法分辨所对应的参数,从而发生报错。

情况二:

  • 仅需一个传参,也使用@Param注解而报错。

解决方案:

情况一:

  • 每一个需要传参的参数加上@Param注解
// 正确示范:该方法需要传参3个,但没有使用@Param注解。
List<Product> selectAllProduct(@Param("productCondition") Product productCondition,
                               @Param("beginIndex") int beginIndex,
                               @Param("pageSize") int pageSize);

情况二:

  • 仅有一个需要传参的参数去除@Param注解
// 正确示范:该方法需要的参数仅有1个,无需使用@Param注解。
int updateProduct(Product product);

我立志做一名把细节都说清楚的博主,欢迎关注🎉 ~
原创不易,有帮助还请鼓励个【赞】哦,谢谢无敌可爱帅气又迷人的小哥哥、小姐姐,爱你哦 ❥(^_-)~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐