总结解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)方法

问题背景:在做SpringBoot项目时候通过controller调用service层的接口出现如下报错

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.service.UserService.getById
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init&gt;(MapperMethod.java:235) ~[mybatis-3.5.2.jar:3.5.2]
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init&gt;(MybatisMapperMethod.java:49) ~[mybatis-plus-core-3.2.0.jar:3.2.0]
	at com.example.controller.UserController.obj(UserController.java:18) ~[classes/:na]

1.问题原因

通过网上搜索到的报错原因本质原因是由于dao层(也可以叫做mapper接口)跟mapper.xml文件没有映射,而大部分的原因有如下几种类型

  1. dao层的方法mapper.xml的方法不一样
  2. mapper.xml中的namespace 要写对应dao层和entity层不一样
  3. spring配置文件mybatisxml文件路径配置没有写,导致无法映射成功
  4. 拼写错误导致

2.解决方法

2.1方法1:

Mypatis配置文件问题,在application.yml添加如下代码

mybatis-plus:
  mapper-locations: classpath*:com/example/mapper/xml/*Mapper.xml

mapperlocations的路径对应响应 .xml 文件所在路径

2.2方法2:

pom.xml 文件下加入如下代码

<build&gt;	
	<resources>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
			<filtering>false</filtering>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
			<filtering>false</filtering>
		</resource>
	</resources>
</build>

这上部分的解决方法应该能解决大部分service报错问题,但是这上面的方法并不能解决我的问题通过我继续对其研究发现在我的一个扫描Mapper配置文件路径错误

在这里插入图片描述
这是由于配置basepackage范围太大,导致service层的接口也被包装了,将basepackage范围缩小dao层既可以解决了
在这里插入图片描述
将其修改对应dao层路径问题就得以解决了

原文地址:https://blog.csdn.net/weixin_44106947/article/details/122910406

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35232.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注