使用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,但是
有效