解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx

简介: 笔记

前言


今天同事在Mapper.xml自定义写了一个SQL,但是调用mapper的时候缺报错


我大概还原下场景


org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wyh.mapper.UserMapper.findByIDWYH


具体如下

1.png

分析问题


一开始我觉得是不是没有扫描到mapper包,但是看了启动类,确实也配注解了呀

2.png

然后我又想 是不是mapper.xml配置的nameSpace和mapper接口的绝对路径对不上呀,但是经过排查,我发现是没问题的

点击小鸟还能调到mapper接口

3.png

我又双叒叕想,是不是方法名称没对上呢? 经过排查又打我的脸了

4.pngimage.png

解决问题


正当我一筹莫展的时候,我突然看到application.properties里面的配置项,有一个配置全局mapper文件路径的配置

#  指定mapper.xml的文件路径
mybatis-plus.mapper-locations = classpath*:mybatis/*.xml

我就发现了猫腻,配置的路径是mybatis,但是创建的包确叫做mapper!

相当于拿着张三的手机号给李四打电话!

9.png

我就把两个包名改成一样的了image.png

这次重启测试,问题也就随之解决了

image.png

感慨

这么小的一个错误,和同事大约找了半小时…


还是得认真仔细点呀,越是不起眼的错误,越是难发现


总结


下面简单总结下,报这个错的主要原因

1 没有扫描到mapper接口包,通常需要在启动类使用注解扫描这个包 比如@MapperScan(“com.xxx.mapper”)

2 mapper.xml中的namespace和实际的mapper文件不一致。

3 mapper接口中的方法名和mapper.xml中的id标签不一致

出现问题不要慌 慢慢找总会找到的


相关文章
|
6月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
6月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
12月前
|
SQL XML Java
mybatis-源码深入分析(一)
mybatis-源码深入分析(一)
|
8月前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
935 1
|
Java 数据库连接 mybatis
mybatis参数报错Parameter ‘docId‘ not found. Available parameters are [arg1, arg0, param1, param2]
mybatis参数报错Parameter ‘docId‘ not found. Available parameters are [arg1, arg0, param1, param2]
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
Java 数据库连接 mybatis
mybatis包扫描环境分析,最简单的环境准备
mybatis包扫描环境分析,最简单的环境准备
|
Java 数据库连接 Maven
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
|
3月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
457 1
Spring boot 使用mybatis generator 自动生成代码插件
|
6月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
445 0