Mybatis报错求助






获取学生信息的时候提示Invalid bound statement (not found): com.kuang.dao.StudentMapper.getStuList,但是上面一个测试获取老师,或者老师列表的代码可以正常跑起来。这个错报的有点诡异。如果我在StudentMapper的接口上使用@Select() 注解来查询,也可以成功查出来,就是通过StudentMapper.xml映射器查不出来。

mapper.xml加载失败。你自己看看你打包后的jar文件里面。是否有mapper.xml文件。

这是打出来的target,我已经检查了,该有的都有

打包后的jar文件。不是你的编辑器目录。我怀疑这个xml文件没有被打包进去。jar文件本身是一个zip压缩包,可以解压缩。你看看的dao目录下是不是有和类名同名的Mapper.xml文件。

我是在Test文件夹里面创建的测试类,这个要怎么看jar包呢?

你在test目录下执行测试的话,你把你的资源文件放到src/test/resources 目录下再试试看。

或者直接把Mapper.xml文件和接口类放在一起试试看(这种方式需要注意打包问题,可能xml不会被打包到JAR中)。

1 Like

解决了。果然是这个坑,感谢您。。。把映射文件放到dao里面就成功了。为什么视频中老师把映射文件放到resources文件夹中就能跑起来呢。。

我也不好解释。按道理来说,maven的打包机制会把resource下的资源打包进去。但是你为什么失败了,我不清楚。可能是BUG。

把mybatis-config.xml下的mapper配置改成

<mapper resource="com.kuang.dao/StudentMapper.xml"/>

也能解决这个问题

我试一下, 使用resource的话不是要com/kuang/dao/StudentMapper.xml吗

你的文件夹名不是com.kuang.dao吗

不是,是包。com/kuang/dao,这个mac版的idea总是自动变成这样