我正在使用注释设置mybatis,并获得此有用的异常
org.apache.ibatis.binding.BindingException: 键入接口org.foo.Bar不是 已知MapperRegistry
Googling it找不到任何内容,也没有找到用户指南。我错过了什么?
答案 0 :(得分:21)
只是因为他们是mybatis的新手而在这里结束的任何人
<击> http://www.mybatis.org/core/configuration.html 击>
http://www.mybatis.org/mybatis-3/configuration.html
在配置文件映射器部分
<mappers>
<mapper class="my.package.com.MyClass"/>
</mappers>
这将启动并运行config.xml和带注释的接口
答案 1 :(得分:7)
将 Mapper 类添加到您的SqlSessionFactory配置中,如下所示:
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(reader);
//very import
factory.getConfiguration().addMapper(BarMapper.class);
SqlSession sqlSession = factory.openSession();
答案 2 :(得分:6)
好的,明白了 - 发生这种情况是因为我使用XML文件进行配置,并使用映射器本身的注释 - mybatis在使用XML配置时找不到映射器注释。
请参阅此followup question。
答案 3 :(得分:2)
在mapper.xml文件中,mapper的命名空间应该是mapper接口的路径。
例如:
<mapper namespace="com.mapper.LineMapper">
<select id="selectLine" resultType="com.jiaotong114.jiaotong.beans.Line">
select * from bus_line where id = #{id}
</select>
</mapper>
你的mapper接口应该在com.mapper包中,它的名字是LineMapper。
答案 4 :(得分:1)
可能是您的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 强>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="non.existent.package.NonExistentMapper">
<resultMap id="MyEntityResultmap" type="MyEntity">
<!-- some result map stuff here -->
</resultMap>
<select id="getByUuid" resultMap="MyEntityResultMap">
<!-- some sql code here -->
</select>
</mapper>
请注意namespace
中<mapper>
元素上的MyEntityMapper.xml
属性指向一些不存在的映射器non.existent.package.NonExistentMapper
,当它确实指向{{1}时}}
答案 5 :(得分:1)
MapperRegistry不知道类型接口 org.domain.classmapper
如果没有将完整的包/类输入mapper xml命名空间,MyBatis会抛出此异常。
e.g。
<mapper namespace="classmapper">
导致异常,但
<mapper namespace="org.domain.classmapper">
有效
答案 6 :(得分:0)
在为spring boot项目创建shadowJar / bootJar时发生 使用org.springframework.boot gradle插件
将jar压缩到bootJar中后,myBatis可能无法找到XML配置文件,并会抛出所描述的异常
将此块添加到build.gradle文件中:
bootJar {
requiresUnpack '**/MyProblematic.jar'
}
解决了我的问题