如何通过MyBatis-Plus在SpringBoot中处理Invalid bound statement异常?

2026-05-25 20:451阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1344个文字,预计阅读时间需要6分钟。

如何通过MyBatis-Plus在SpringBoot中处理Invalid bound statement异常?

目录前言缘起解决难题总结前言本篇主要介绍我在SpringBoot中使用MyBatis-Plus时,如何解决Invalid bound statement (not found)这个异常问题。

缘起在使用MyBatis-Plus进行数据库操作时,遇到了Invalid bound statement (not found)的异常。经过一番排查,最终找到了解决方法。

解决难题以下是我遇到的一些问题及解决方法:

1. 问题:MyBatis-Plus的XML映射文件中,mapper标签的namespace属性错误。 解决方法:检查XML映射文件中mapper标签的namespace属性是否与对应的Mapper接口的完整包名一致。

2. 问题:MyBatis-Plus的XML映射文件中,SQL语句错误。 解决方法:检查XML映射文件中的SQL语句是否正确,包括语法、参数等。

3. 问题:MyBatis-Plus的Mapper接口中,方法名与XML映射文件中SQL语句的id不一致。 解决方法:确保Mapper接口中的方法名与XML映射文件中SQL语句的id一致。

4. 问题:MyBatis-Plus的Mapper接口中,方法参数类型与XML映射文件中SQL语句的参数类型不一致。 解决方法:确保Mapper接口中的方法参数类型与XML映射文件中SQL语句的参数类型一致。

总结通过以上方法,成功解决了Invalid bound statement (not found)这个异常问题。在实际开发过程中,遇到此类问题,可以按照以上步骤进行排查。

目录
  • 前言
  • 缘由
  • 解决问题
  • 总结

前言

本篇文章主要介绍关于我在SpringBoot中使用MyBatis-Plus是如何解决Invalid bound statement (not found)这个异常的。我先抛一些我在这个途中遇到的一些问题,看看各位了解不了解。

  • Mybatisxml文件不在resouce下时该如何配置。
  • 如何去指定mapper-Location的配置。
  • classpath*classpath的区别是啥
  • Invalid bound statement (not found)出现的原因是什么

以上就是我遇到这个问题之后总结的三个问题。

缘由

作者来了一下新公司,这边的框架看的我很闷,特别是关于mybatis的一些用法。这边的sql都是用注解写在Mapper文件上。

例如:

@Select("SELECT id,status, " + " actual_usage_id usage_id," + " location_id ," + " group_id ," + " breakdown_Level_id, " + " receive_persion_id " + "FROM " + " t_repair_workorder " + " ${ew.customSqlSegment} ") List<IndexDutyPageVo> dutyFaultPage(@Param(Constants.WRAPPER) Wrapper<?> wrappser);

整个项目全是这种写法,我一开始以为是规范。后面问了一个老员工才知道。说以前这个项目是写在xml的,但是后面改了一下架构之后xml的配置就扫描不到了。嗯嗯嗯…

这边的项目结构,xml文件不是放在resouce下,并且具体的业务包是跟maven引入进去的(这个就是我前文提到的架构改变了)。注意这两个是重点。我猜测他们不会配置的点应该就是这个原因了吧。

如何通过MyBatis-Plus在SpringBoot中处理Invalid bound statement异常?

解决问题

竟然知道了问题就开始解决问题。

Mybatisxml文件不在resouce下时该如何配置。

Mybatis中如果xml文件不在resource目录下的话,默认打包是会被忽略的,所以需要在pom文件中加一段配置。

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

改完这个后重新build一下,注意去查看下target文件夹下是否xml文件。

如何去指定mapper-Location的配置

mybatis-plus: mapper-locations: classpath*:top/**/*.xml ## top是我具体文件夹可以不要, **的意思代表一个或者多个目录

classpath*classpath的区别是啥

这个问题是重点要考的记一下,带*的话会扫描jar包下面的文件,不带*只会扫描当前项目。

Invalid bound statement (not found)出现的原因是什么?如何排查这个问题

这个报错的出现,就是代表你的mapper文件跟xml映射不到。如果你确保你的框架没有问题下,其它的代码都能映射得到的情况,那么你就要注意了,首先你的xml文件的名字跟Mapper文件是不是一致的,方法名跟xmlid是不是一致的。如果你这两个都对了,再去查你的mapper-locations的配置,这里没问题,再去查编译包。看看xml编译到了不。如果这些都没问题。那人跟代码只要一个能跑就行。

总结

其实使用xml跟使用注解的形式都能完成需求,没多大的区别。但是使用xml的可读性,以及易维护性。个人觉得比注解方式强太多了。此次问题的出现,关键在于架构的改变,架构者一想把xmlresource移除,二又想把业务模块热插拔。这个想法是好的。但是做事做一半真的不太可取。

到此这篇关于SpringBoot使用MyBatis-Plus解决Invalid bound statement异常的文章就介绍到这了,更多相关SpringBoot 异常内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计1344个文字,预计阅读时间需要6分钟。

如何通过MyBatis-Plus在SpringBoot中处理Invalid bound statement异常?

目录前言缘起解决难题总结前言本篇主要介绍我在SpringBoot中使用MyBatis-Plus时,如何解决Invalid bound statement (not found)这个异常问题。

缘起在使用MyBatis-Plus进行数据库操作时,遇到了Invalid bound statement (not found)的异常。经过一番排查,最终找到了解决方法。

解决难题以下是我遇到的一些问题及解决方法:

1. 问题:MyBatis-Plus的XML映射文件中,mapper标签的namespace属性错误。 解决方法:检查XML映射文件中mapper标签的namespace属性是否与对应的Mapper接口的完整包名一致。

2. 问题:MyBatis-Plus的XML映射文件中,SQL语句错误。 解决方法:检查XML映射文件中的SQL语句是否正确,包括语法、参数等。

3. 问题:MyBatis-Plus的Mapper接口中,方法名与XML映射文件中SQL语句的id不一致。 解决方法:确保Mapper接口中的方法名与XML映射文件中SQL语句的id一致。

4. 问题:MyBatis-Plus的Mapper接口中,方法参数类型与XML映射文件中SQL语句的参数类型不一致。 解决方法:确保Mapper接口中的方法参数类型与XML映射文件中SQL语句的参数类型一致。

总结通过以上方法,成功解决了Invalid bound statement (not found)这个异常问题。在实际开发过程中,遇到此类问题,可以按照以上步骤进行排查。

目录
  • 前言
  • 缘由
  • 解决问题
  • 总结

前言

本篇文章主要介绍关于我在SpringBoot中使用MyBatis-Plus是如何解决Invalid bound statement (not found)这个异常的。我先抛一些我在这个途中遇到的一些问题,看看各位了解不了解。

  • Mybatisxml文件不在resouce下时该如何配置。
  • 如何去指定mapper-Location的配置。
  • classpath*classpath的区别是啥
  • Invalid bound statement (not found)出现的原因是什么

以上就是我遇到这个问题之后总结的三个问题。

缘由

作者来了一下新公司,这边的框架看的我很闷,特别是关于mybatis的一些用法。这边的sql都是用注解写在Mapper文件上。

例如:

@Select("SELECT id,status, " + " actual_usage_id usage_id," + " location_id ," + " group_id ," + " breakdown_Level_id, " + " receive_persion_id " + "FROM " + " t_repair_workorder " + " ${ew.customSqlSegment} ") List<IndexDutyPageVo> dutyFaultPage(@Param(Constants.WRAPPER) Wrapper<?> wrappser);

整个项目全是这种写法,我一开始以为是规范。后面问了一个老员工才知道。说以前这个项目是写在xml的,但是后面改了一下架构之后xml的配置就扫描不到了。嗯嗯嗯…

这边的项目结构,xml文件不是放在resouce下,并且具体的业务包是跟maven引入进去的(这个就是我前文提到的架构改变了)。注意这两个是重点。我猜测他们不会配置的点应该就是这个原因了吧。

如何通过MyBatis-Plus在SpringBoot中处理Invalid bound statement异常?

解决问题

竟然知道了问题就开始解决问题。

Mybatisxml文件不在resouce下时该如何配置。

Mybatis中如果xml文件不在resource目录下的话,默认打包是会被忽略的,所以需要在pom文件中加一段配置。

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

改完这个后重新build一下,注意去查看下target文件夹下是否xml文件。

如何去指定mapper-Location的配置

mybatis-plus: mapper-locations: classpath*:top/**/*.xml ## top是我具体文件夹可以不要, **的意思代表一个或者多个目录

classpath*classpath的区别是啥

这个问题是重点要考的记一下,带*的话会扫描jar包下面的文件,不带*只会扫描当前项目。

Invalid bound statement (not found)出现的原因是什么?如何排查这个问题

这个报错的出现,就是代表你的mapper文件跟xml映射不到。如果你确保你的框架没有问题下,其它的代码都能映射得到的情况,那么你就要注意了,首先你的xml文件的名字跟Mapper文件是不是一致的,方法名跟xmlid是不是一致的。如果你这两个都对了,再去查你的mapper-locations的配置,这里没问题,再去查编译包。看看xml编译到了不。如果这些都没问题。那人跟代码只要一个能跑就行。

总结

其实使用xml跟使用注解的形式都能完成需求,没多大的区别。但是使用xml的可读性,以及易维护性。个人觉得比注解方式强太多了。此次问题的出现,关键在于架构的改变,架构者一想把xmlresource移除,二又想把业务模块热插拔。这个想法是好的。但是做事做一半真的不太可取。

到此这篇关于SpringBoot使用MyBatis-Plus解决Invalid bound statement异常的文章就介绍到这了,更多相关SpringBoot 异常内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!