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

这篇具有很好参考价值的文章主要介绍了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注解文章来源地址https://www.toymoban.com/news/detail-597652.html

import org.apache.ibatis.annotations.Param;

@Mapper
public interface MyMapper {
    int countByCode(@Param("code") String code);
}

到了这里,关于nested exception is org.apache.ibatis.binding.BindingException 解决方式汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包