我遇到这个问题后,在网上找了很多,但都是说的官话:

  1. 检查mybatis.xml文件namespace名称是否和Mapper接口的全限定名是否一致
  2. 检查Mapper接口的方法在mybatis.xml中的每个语句的id是否一致
  3. 检查Mapper接口方法返回值是否匹配select元素配置的ResultMap,或者只配置ResultType
  4. 检查yml文件中的mapper的XML配置路径是否正确

用人话来说,我遇到的是两个问题(举例)

  1. 资源下的UserMapper.xml中的namespace要与接口类(interface)UserMapper的地址一致,这个大家应该已经检查了无数次了。主要是第二种。
  2. UserMapper.xml文件在resources下的位置应和接口类Usermapper的位置一致。还是上方那张图,UserMapper接口的位置是java/tt/mybatis/mapper/UserMapper,那么映射文件的位置也应该是resources/tt/mybatis/mapper/UserMapper.xml

注意:

  • 如果两者的位置是错的,就是如标题所述的错误(如下)
    • 当我把UserMapper.xml映射文件的位置由resources/tt/mybatis/mapper/UserMapper.xml改为resources/mapper/UserMapper.xml,就会出错。
  • 还有一种错误是在resources下建立文件夹时,不能用tt.mybatis.mapper来建立,得用tt/mybatis/mapper来建立文件夹,虽然在IDEA中看起来并无两样,但是两者建立的目录路径是不同的。(右键点击红色部分,选择”Show in Explorer”,上为正确的)