Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample

做一个SSM项目,遇到如下问题:

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第1张图片

网上找了很多经验贴,大多数解决办法是:

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第2张图片

这些问题都排查过了,没发现问题,依然报错

最后经过排查,逆向工程生成的接口和xml实现文件要放在同一个包下才能起作用:

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第3张图片

回想了一下错误,是因为对引入的jar包认识不足导致的。之前做的一个SSM项目,引入逆向工程之后,读取Mapper.xml文件,是在Spring.xml中配置的,如图:

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第4张图片
因为觉得这个更简单,所以就直接这样子配置之后,把接口和Mapper.xml文件分开(因为觉得Java后缀和xml后缀文件放在一起怪别扭的,不美观):

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第5张图片

结果跑了一次程序,前两天也能跑通,不过今天突然报这个错,我以为和新功能有冲突,排查了一天时间!
找了很多网帖后,终于发现了一个

致命错误就是:

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第6张图片

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第7张图片
由于这位大哥的帖子是最近的,阅读量也不高,所以不太好找到,不过还是很幸运遇到!!!

所以错误重点是:
配置了mybatis的分页插件后用service层去访问mapper层时被拦截了


正确写法是:

将接口和Mapper.xml文件放在同一个包下,SPring配置文件中,不需要扫描这个包,在Mapper项目的pom.xml中扫描这个包,放行就好!

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第8张图片

Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第9张图片

总结:

逆向工程生成文件两种扫包方式:

1.spring配置文件扫包
Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第10张图片
2.Mapper项目的pom.xml文件扫包
Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第11张图片

如果项目中没有引入mybatis分页插件pagehelper-3.4.2-fix.jar,则两种方法皆可以用,如果引入了这个插件,只能用第二种方法。

因为配置了mybatis的分页插件后用service层去访问mapper层时被拦截了
Invalid bound statement (not found): com.***.mapper.TbItemCatMapper.selectByExample_第12张图片


感悟:

跟着视频敲项目代码,对于一个新的技术引入,如果回想起曾经也用其他技术实现了相似的功能,并不代表两个方法完全一样。比如以前扫描包的时候是在SPring配置文件中,这次学到的这个是在Dao层接口的pom.xml文件中扫包。我将以往的那个方法用在这个项目上,起初也能正常运行。以为是两个方法是一样的,结果昨日报错,我都没想到是这里出了问题。后来看了帖子,知道了之所以用在pom.xml扫包的方法,是因为这个SSM项目配置了mybatis的分页插件后用service层去访问mapper层时被拦截了。

不过所幸,我没有完完全全按照视频敲代码,也融入了我以往的方法,在经过艰难的调bug之后,我理解了两种方法的区别,学习到了新的技能!

你可能感兴趣的:(错误发现,SSM)