nested exception is org.apache.ibatis.binding.BindingException 解决方式汇总

前言

MyBatis Mapper出现了nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘levelName’ not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2],说明是Mapper接口方法的参数在编译的时候没有按照代码写的参数来进行。需要解决这个问题,可以从以下方面入手。

Maven Compiler插件

从Java 1.8开始,编译的时候加上 -parameters 是可以将参数名保存到class文件里的,
而使用 Apache Maven Compiler插件,加上一点配置,是可以自动将这个参数加上的,
如果发现没有引入这个插件,或者这个插件没有开启parameters,可以尝试加上这个参数。

<build>
    <plugins>
	     <plugin>
	         <groupId>org.apache.maven.plugins</groupId>
	         <artifactId>maven-compiler-plugin</artifactId>
	         <configuration>
	             <parameters>true</parameters>
	         </configuration>
	     </plugin>
     </plugins>
</build>

另外,需要注意的是parameters参数是3.6.1以后加入的功能,所以要保证maven-compiler-plugin的版本是3.6.1以上。

Maven Resouces插件

还有一种可能是没有使用maven-resources-plugin,将sql mapper的xml文件打到包里面,
可以检查下项目的pom中是否引入了这个插件

<build>
    <plugins>
 		 <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-resources-plugin</artifactId>
               <configuration>
                   <propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
                   <delimiters>
                       <delimiter>${resource.delimiter}</delimiter>
                   </delimiters>
                   <useDefaultDelimiters>false</useDefaultDelimiters>
               </configuration>
 		 </plugin>
     </plugins>
</build>

@Param注解

其实如果你的pom工程是基于 spring-boot-starter-parent 构建的,而且自己也没有重新定义过插件的配置,那么应该是不会出现问题的:

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>weareint-spring-boot-dependencies</artifactId>
        <version>2.6.x</version>
    </parent>

反之,如果是团队自己维护的parent,而团队暂时无法解决这个问题时,只能自己辛苦点,在自己的Mapper方法参数前,加上@Param注解

import org.apache.ibatis.annotations.Param;

@Mapper
public interface MyMapper {
    int countByCode(@Param("code") String code);
}
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nested exception is org.apache.ibatis.binding.BindingExceptionMyBatis框架中的异常,表示在执行Mapper接口方法时出现了参数绑定异常。具体的错误信息是"Parameter 'xxx' not found. Available parameters are [xxx, xxx, ...]"。这个异常通常发生在Mapper接口方法的参数与XML映射文件中定义的参数不匹配的情况下。 要解决这个异常,可以从以下几个方面入手: 1. 检查Mapper接口方法的参数名与XML映射文件中的参数名是否一致。确保参数名的一致性可以避免这个异常的出现。 2. 检查Mapper接口方法的参数个数与XML映射文件中定义的参数个数是否一致。如果个数不一致,也会导致参数绑定异常的发生。 3. 在XML映射文件中,可以使用param1、param2等占位符来表示参数的位置,而不是具体的参数名。这样可以避免参数名不一致导致的异常。 总结一下,nested exception is org.apache.ibatis.binding.BindingException表示MyBatis在执行Mapper接口方法时遇到了参数绑定异常。要解决这个问题,需要确保Mapper接口方法的参数与XML映射文件中的参数一致,并检查参数个数是否匹配。如果还是无法解决,可以考虑使用占位符来表示参数位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mybatis异常:nested exception is org.apache.ibatis.binding.BindingException](https://blog.csdn.net/niu1109/article/details/124434791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [nested exception is org.apache.ibatis.binding.BindingException 解决方式汇总](https://blog.csdn.net/qq_39609993/article/details/128725325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值