案例分享-被*队友的mybatis蠢哭的一天

昨晚加班的时候被队友拉着看一个mybatis的问题,耗费了我一个小时时间,最后差点没被我打死,实在是觉得滑稽,今天回家写下来跟大伙分享一下。

问题现象

Invalid bound statement (not found),看到这个错我当时就没兴趣了,我说你这不就是xml里没写xxxMapper.java方法对应的语句吗,这还有啥犹豫的呢,检查你的xml啊。

 

 

队友说,哥,我检查好多遍了,实在是找不出原因啊,这类问题常见的出错原因也就以下几类:

1.检查xml文件所在namespace名称是否和Mapper interface所在的包名一样;

2.mapper的XML配置路径是否正确

3.xml里没写xxxMapper.java方法对应的语句

4、5、6

。。。。。。

罢了罢了,出问题的时候都说自己没问题,眼见为实,我还是自己检查一遍。

差点打脸

我把常见的报错原因挨着检查了一遍,愣是没发现问题,场面一度尴尬,还debug了半天mabatis的源码,然并卵,最终我决定解压jar包看看里面究竟有没有那个xml文件。

 

 乍一看似乎没有问题,xml是存在的,里面的<Select>也是存在的,停顿三秒钟。

水落石出

 

mybatis.mapper.upgrade这个目录,看起来有点奇怪,怎么没有层级。

“啊,这还有层级,我以为是目录的名字呢,我是这么建的”

 

搞半天你小子是建了个名字叫“mybatis.mapper.upgrade”的目录,你是怎么想的?

你的mapperLocations设置的是classpath:mybatis/mapper/upgrade*/*.xml,怎么想mybatis/mapper/upgrade这也是个多级目录啊?

“我参考enterprise那个服务弄的,enterprise里的mapper目录就叫mybatis.mapper.enterprise,也没有层级。"

那个是有层级的,只是你的idea设置了“Compact Middle Packages”导致展示成了mybatis.mapper.enterprise而已,你把"Compact Middle Packages"取消了再看。

 

“是的,取消了以后层级确实出来了"

 

到这问题已经水落石出,白白浪费一小时时间,也反映出队友的mybatis基础有待提升,这个操作着实有点滑稽。

 

你曾经遇到过队友的哪些神奇操作?

 

 照片拍摄于西安大唐西市

 

 

 

posted @ 2023-06-05 12:08  踩刀诗人  阅读(1401)  评论(14编辑  收藏  举报