使用mybatis“MapperRegistry不知道类型接口”exception

我正在使用注释设置mybatis,并获得这个有用的例外

org.apache.ibatis.binding.BindingException:MapperRegistry不知道类型接口org.foo.Bar

谷歌搜索没有找到任何东西,也没有找到用户指南。 我错过了什么?

只为那些在这里结束的人,因为他们是mybatis的新手http://www.mybatis.org/core/configuration.html
http://www.mybatis.org/mybatis-3/configuration.html

在配置文件mappers部分

   

这将使您启动并运行config.xml和带注释的接口

好了,得到了 – 这是因为我正在使用XML文件进行配置,并使用映射器本身的注释 – 而mybatis在使用XML配置时没有找到映射器注释。

请参阅此后续问题 。

Mapper类添加到您的SqlSessionFactory配置中,如下所示:

 SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(reader); //very import factory.getConfiguration().addMapper(BarMapper.class); SqlSession sqlSession = factory.openSession(); 

在mapper.xml文件中,mapper的命名空间应该是mapper接口的路径。

例如:

    

你的mapper接口应该在com.mapper包中,它的名字是LineMapper。

可能是您的mapper.xml文件使用了不正确的命名空间(可能是因为复制粘贴错误)。

例如,假设您有一个名为MyEntityMapper.java的Java接口,该接口链接到名为MyEntityMapper.xml的mybatis映射器xml配置:

MyEntityMapper.java

 package my.mappers; public interface MyEntityMapper { MyEntity getById(@Param("id") String id); } 

MyEntityMapper.xml

         

请注意, MyEntityMapper.xml 元素上的namespace属性指向一些不存在的映射器non.existent.package.NonExistentMapper ,实际上它应该指向my.mappers.MyEntityMapper

MapperRegistry不知道类型接口org.domain.classmapper

如果没有将完整的包/类输入到mapper xml命名空间中,MyBatis会抛出此exception。

例如, 会导致exception,但是

有效