栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis常见异常:Invalid bound statement (not found): com.ruoyi.news.mapper.RuoyiNewsMapper.selectRuoyiNe

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis常见异常:Invalid bound statement (not found): com.ruoyi.news.mapper.RuoyiNewsMapper.selectRuoyiNe

Invalid bound statement——无效绑定,应该是mybatis最常见的一个异常了,这个异常不管具体什么原因导致,归根结底,就是mapper接口和xml没有绑定成功。这里先简单回顾一下接口与xml的绑定原理。

首先,mapper接口并没有实现类,所以框架会通过JDK动态代理代理模式获取接口的代理实现类,进而根据接口全限定类名+id去一一绑定xml中的sql。

用debug断点我们看到MappedStatement这个对象为空,而通过源码跟踪,这个对象包含了开发人员编写的SQL语句、参数结构、返回值结构、Mybatis对它的处理方式的配置等细节要素,是对一个SQL命令是什么、执行方式的完整定义。

MappedStatement保存在Configuration#mappedStatements这个Map类型的对象中,其存储的key为MappedStatement#id,所以MappedStatement的id是不能重复的,这个id是由Mapper接口的完全限定名和方法名称拼接而成,这就导致了我们在同一个Mapper中不能出现重载的接口方法。

 也就是说,在绑定过程中,mapper加载成功了,xml加载失败了,所以将问题定位在xml的身上,通过查看target目录发现,mapper接口的层级目录如下:

而xml编译后的目录如下:

可以发现,xml并没有像接口那样按照文件层级编译,而是被当做了一个文件夹名为mapper.news的文件夹处理,问题就出在这里。原来是自己建立文件夹的时候没有分两步建立,而是偷懒直接建了一个mapper.news的文件夹。真是大坑啊,于是删除重新创建,install,启动,搞定。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号