Mybatis之IDEA真假路径解决方案之一

开门见山

首先问题描述:

SpringBoot启动时报的问题:org.apache.ibatis.binding.bindingexception: invalid bound statement (not found): com.moxi.mapper.filmmapper.findfilmbylimitpage。
简单解释一下问题:什么意思呢?这个问题是说没有找到filmmapper所对应的 Filmmapper.xml文件,可能就是映射,路径配置有问题。
首先应该考虑的是Mapper是否映射成功,这个思路完全是没有问题的,正确的,但是呢,我的错都不是常规的的错误。
常规的错误我就不赘述了,参考一下几位大佬的解决方案基本能解决,我主要描述我的问题。

解决通道

超全超详细解读,mybatis报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误

其实在这一篇文章中最后改文件夹的方法是能够解决我的问题的。解决完之后,我再想为什么,难道Mybtis中版本对resource下的Mapper获取路径有变化,可能有的版本是不一样的,源码我就不解读了,但是我的问题不是源码的问题。

Springboot中mapper.xml映射文件存放在resource目录下问题

mybatis配置mapper-locations位置的多种方式

以上三篇大佬的文章已经基本能解决大部分问题啦。

我的问题

我的问题根源是路径有问题,但不是配置的问题,配置一切正常,包括yml中mybatis的配置、@MapperScan的Mapper包扫描配置。我的问题是IDEA在resource文件夹中创建文件夹的问题,这够奇葩吧!

mybatis:
  type-aliases-package: com.moxi.bean
  mapper-locations: classpath:com/moxi/mapper/**/*.xml
@MapperScan(basePackages = {"com.moxi.mapper"})

上我的文件目录结构:(自动忽略画了红线的文件夹)
目录结构
从配置上来说没有问题吧!一切正常吧!
好,现在我开始展示一个图片:
resource
现在我提问:“这两个个文件夹是不是一样的呢”?
IDEA里从视觉上看是一样的,名字相同,但是我们都知道,不可能在同一个文件夹下有相同名称的文件夹的(首选我没有使用所谓的隐藏符号),所以它们是不同的文件夹,然我就在这上面栽跟头了。
下面,我揭秘:
移动文件夹1
在这里插入图片描述
重命名文件目录1
在这里插入图片描述
重命名文件夹2
在这里插入图片描述

所以你注意到区别了吗?一个是文件夹的子文件夹,另一个是一个文件夹。IDEA给展示的视觉效果是一模一样的。
所以我是怎么创建出第二个文件夹呢?
在Java文件下创建一个类时就可以直接com.moxi.Test这样连包带类或者只是连包的创建文件夹。所以我的惯性直接在resource下. . 的去创建文件夹,创建完看着没有丝毫问题,还是我去找直接用maper文件夹就行,我这样不行的原因才发现的。说一下这样的解决方法吧,IDEA里在resource中一次创建多层文件夹用/
声明一下直接用mapper文件夹是可以的,只是在创建相同的Java目录下的文件包是一种规范约束,会好一些。

吐槽

真的还是不够大标准化,Java中“.”表示一级包,当然Javah中叫做包,实际上还不是文件夹,所以本质无区别。其次,这IDEA文件夹展示的这个功能,我一直觉得做的很烂,点点的就不能做个分层展示的功能吗,这不是对项目更清晰明了些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值