mybatis接口绑定失效的解决

 更新时间:2021年11月26日 10:39:26   作者:张意的博客  
这篇文章主要介绍了mybatis接口绑定失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis接口绑定失效

出现错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

解释:这是mybatis所报的异常,意思是接口绑定失效

原因:

1.项目编译完成后mapper接口和mybatis的xml不在同一个目录下导致接口绑定失败。

2.如果是maven工程,使用idea编辑工程,会出现xml文件无法被编译到target当中,这种情况有两种解决,首先将和mapper接口在一起的xml文件放在resources文件夹下,这种情况下需要将xml文件所在的包名改成和mapper所在包名一致,还有一种情况就是在pom文件中将xml文件所在的目录标记为资源路径。

3.配置文件的路径写的有问题,在spring整合mybatis配置中指定mybatis的xml路径出错尤其注意如果如果resources包下和java包下路径相同一定要在路径前加classpath:来区别两者的不同,不然也会出现接口绑定失效的问题。

4.mybatis的xml文件中标签的namespace和对应mapper接口的全限定类名(包名+类名,不含类的后缀名)不一致

5.mybatis的xml文件中标签的id与对应mapper接口中的方法名不一致

与对应mapper接口中的方法名不一致**

小结一下

大体总结为mapper接口和xml之间关联出错,还有就是配置文件对xml所在文件路径指定错误,最后就是在编译后mapper接口和mybatis的xml不在同一个文件夹中。

mybatis接口绑定方法

通常情况下,使用Mapper.xml是无法实现多个参数的传递,除非传入Map或者是对象,这个时候我们就可以使用接口绑定的方法传入多个参数,

实现方法

第一步:创建一个与XML包名,类名完全相同的接口,包名类名即XML中配置的namespace

第二步:创建一个与XML中ID相同的方法,然后设置参数,

public interface LogMapper {
List<Log> selAll();
}

第三步:在 mybatis.xml 中使用<package>进行扫描接口和 mapper.xml

<mappers>
<package name="com.bjsxt.mapper"/>
</mappers>

在XML中传递参数

因为有多个参数,所以在XML中参数的返回值可以不用写, 但是在传参的时候。

第一种方法:可以在SQL语句中加入#{0} #{param1}就可以传递参数

第二种方法: 使用注解传递参数,

第一步 : 在函数的参数前添加注解

List<Log> selByAccInAccout(@Param("accin") String
accin123,@Param("accout") String accout3454235);

第二步: #{} 里面写@Param(“内容”)参数中

<!-- 当多参数时,不需要写 parameterType -->
<select id="selByAccInAccout" resultType="log" >
select * from log where accin=#{accin} and
accout=#{accout}
</select>

这就相当于是系统底层给我们也注释中写的字符串为Key 以形参为value 形成一个key然后传递给XML 这就实现了多个参数的传递

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java的内存分配与回收策略详解

    Java的内存分配与回收策略详解

    这篇文章主要介绍了Java的内存分配与回收策略详解,对象的内存分配,就是在堆上分配,对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置,需要的朋友可以参考下
    2023-08-08
  • 解决maven build 无反应,直接terminated的问题

    解决maven build 无反应,直接terminated的问题

    下面小编就为大家带来一篇解决maven build 无反应,直接terminated的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java根据控制台实现定位异常

    Java根据控制台实现定位异常

    这篇文章主要介绍了Java根据控制台定位异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 火遍全网的Hutool使用Builder模式创建线程池的方法

    火遍全网的Hutool使用Builder模式创建线程池的方法

    这篇文章主要介绍了火遍全网的Hutool使用Builder模式创建线程池的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • java枚举是如何保证线程安全的

    java枚举是如何保证线程安全的

    这篇文章主要介绍了java枚举是如何保证线程安全的。Java SE5提供了一种新的类型-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能。,需要的朋友可以参考下
    2019-06-06
  • 如何利用Ganymed SSH-2模拟SSH操作

    如何利用Ganymed SSH-2模拟SSH操作

    这几天看SFTP资料时,无意中看到了Ganymed SSH-2,写了个简单demo,通过,感觉挺好用的,下面就和大家分享下。需要的朋友可以过来参考参考
    2013-08-08
  • SpringBoot使用POI进行Excel下载

    SpringBoot使用POI进行Excel下载

    这篇文章主要为大家详细介绍了SpringBoot使用POI进行Excel下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • jpa多数据源时Hibernate配置自动生成表不生效的解决

    jpa多数据源时Hibernate配置自动生成表不生效的解决

    这篇文章主要介绍了jpa多数据源时Hibernate配置自动生成表不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring针对AOP详细讲解

    Spring针对AOP详细讲解

    Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,对项目开发提供了极大地便利
    2022-06-06
  • Java操作另一个Java程序使其重启的简单实现

    Java操作另一个Java程序使其重启的简单实现

    下面小编就为大家带来一篇Java操作另一个Java程序使其重启的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论