springboot Invalid bound statement (not found): com.elitel.xxx.dao.xxx 错误处理

news/2024/10/1 12:14:54

如果这篇文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,一起学习,共同进步!

  今天给同事看了个问题,发现了这个问题,之前也遇见过,可是没有遇见这种情况,这次我记录一下。

  首先来说,造成这个错误的原因是什么。它是在Spring Boot应用程序中遇到“Invalid bound statement (not found)”错误,通常意味着你的MyBatis(或MyBatis-Spring-Boot-Starter)找不到某个SQL映射语句。

  由远到近,从无到有一点一点分析和排查

  1:首先判断是否生成了class文件,去target文件加下面去你相应的文件夹下面查看,是否有生成的mapper.xml  如果没有,重新编译一下,选择Build-->Rebuild Project  进行重新编译

  

   2: 如果第二种情况如果target 文件夹下面有数据,那么就去看mapper.xml 文件当中的    namespace  是否是你mapperDao 接口的相对路径,点击一下能否进去, 顺带着看看你的sql id 是不是跟方法名对应上了

  但是这种情况,大部分人应该是不会犯错误的,因为现在多为自动生成的。

  例如:UserMapper.java

  

package com.example.mapper;import com.example.model.User;public interface UserMapper {User findById(int id);
}

  UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper"><select id="findById" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>

 

  3:如果mapper.xml文件也没有问题,可以排查 xxxxApplication这个启动类里面的注解了

    看看你的mapperScan 是否能扫描到你的接口的包  。例如我的MyApplication 里面的mapperScan就是扫描到了mapper(Dao)下面  

    @MapperScan(value = {"com.example.mapper"}) 如果路径错误了请及时更正
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.mapper")
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

     4: 以上都没有问题可以排查配置文件,查看配置文件 当中配置的xml文件的路径是否正确

  applicaition.properties 当中是否写对了,例如:mybatis.mapper-locations=classpath*:mapper/*.xml

  application.yml当中这样写

mybatis:mapper-locations: classpath*:mapper/*.xml

 

  在这里需要注意的是,例如我同事之前写的是这种的

mybatis:mapper-locations: classpath*:mapper/db1/mysql/*.xml

     xml存放在resources 下是以这种形式展现的,那么这种是错误的。

  因为它在文件夹下面是这么展示的:

  

   我同事就是因为这种情况出现了错误。我排查到最后才发现。这块得使用文件夹父子目录的形式去呈现。而不是包名写成这样。

   至此大概率可以解决99%的关于这个的问题。如果还剩1%。当你确实都检查过了,还是不行,你可以选择两件事,第一关闭idea 然后重启.如果第一步不行,第二步:关闭电脑重启电脑。

   目前为止:我就关过一次电脑。希望大家没到关电脑的这一步。

  

 

  

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

yrx24题万籁俱寂

fiddler抓包会被检测,可以用Charles抓包。 用的http2.0协议,不能用request请求,可以用httpx来请求拿到数据

多款可观测产品全面升级丨阿里云云原生 5 月产品月报

《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。云原生月度动态 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供…

序列化-serialVersionUID作用

Serializable接口 作用:标记一个类可以被序列化,如果没有实现该接口,则会抛出异常。 ObjectOutputStream中源码:实验:serialVersionUID 作用:表示一个序列换版本,控制序列化与反序列化。 实现Serializable接口后,如果不显式设置serialVersionUID,那么系统会根据类中内…

【运维技巧】海豚调度工作流实例卡在正在停止任务实例卡在正在运行怎么办?

在大数据调度系统中,,大家可能会碰到任务实例状态更新不及时的情况。 对于Apache DolphinScheduler用户来说,这可能意味着前端显示的任务状态与实际情况不一致,即使任务已经在后台停止运行,前端仍显示为“正在运行”。这种现象不仅影响监控和管理,还可能导致后续任务调度…

想做物联网卡系统 是因为不想忍

(点击图片 查看 首年进度条)无论是否成功我们将持续投入最低三年持续资源研发开发开源IoTOS-物联网卡 这个体系的软件功能;期初做物联网卡软件仅仅是上班混口饭吃随着公司与发展看到了痛点及真实用户需求有了自身的想法想来做一套已 为使用者 ‘盈利’ 为目的 的物联网卡软件…

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类|附代码数据

全文下载链接:http://tecdat.cn/?p=8640 在本文中,我们将看到如何开发具有多个输出的文本分类模型。我们开发一个文本分类模型,该模型可分析文本注释并预测与该注释关联的多个标签。多标签分类问题实际上是多个输出模型的子集。在本文结尾,您将能够对数据执行多标签文本分…

微服务架构qiankun集成react子应用

前一篇文章讲了qiankun集成vue子应用,这篇随笔讲集成react子应用。 1、创建react子应用 用react脚手架初始化一个react项目,至于项目的数据仓库store和路由、以及UI组件库这里就不做讲解,可以自己自行网上找资料配置。create-react-app my-react-app2、在src路径下创建publ…

MyBatis 的在使用上的注意事项及其辨析

1. MyBatis 的在使用上的注意事项及其辨析 @目录1. MyBatis 的在使用上的注意事项及其辨析2. 准备工作3. #{ } 与 ${ } 的区别和使用{}3.1 什么情况下必须使用 $3.1.1 拼接表名3.1.2 批量删除3.1.3 模糊查询3.1.3.1 使用 ${ }的方式3.1.3.2 使用 #{ } 的方式4. typeAliases 别名…