这篇文章主要介绍了SpringBoot使用MyBatis-Plus解决Invalid bound statement异常,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
前言
本篇文章主要介绍关于我在SpringBoot
中使用MyBatis-Plus
是如何解决Invalid bound statement (not found)
这个异常的。我先抛一些我在这个途中遇到的一些问题,看看各位了解不了解。
- 当
Mybatis
的xml
文件不在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
的xml
文件不在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
文件是不是一致的,方法名跟xml
的id
是不是一致的。如果你这两个都对了,再去查你的mapper-locations
的配置,这里没问题,再去查编译包。看看xml
编译到了不。如果这些都没问题。那人跟代码只要一个能跑就行。
总结
其实使用xml
跟使用注解的形式都能完成需求,没多大的区别。但是使用xml
的可读性,以及易维护性。个人觉得比注解方式强太多了。此次问题的出现,关键在于架构的改变,架构者一想把xml
从resource
移除,二又想把业务模块热插拔。这个想法是好的。但是做事做一半真的不太可取。
到此这篇关于SpringBoot使用MyBatis-Plus解决Invalid bound statement异常的文章就介绍到这了,更多相关SpringBoot 异常内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:SpringBoot使用MyBatis-Plus解决Invalid bound statement异常
基础教程推荐
- java实现多人聊天系统 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- Java实现查找文件和替换文件内容 2023-04-06
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现线程插队的示例代码 2022-09-03
- Java文件管理操作的知识点整理 2023-05-19
- java基础知识之FileInputStream流的使用 2023-08-11
- Java并发编程进阶之线程控制篇 2023-03-07
- JDK数组阻塞队列源码深入分析总结 2023-04-18