我收到错误Type class myPackage.MyClass is not known to the MapperRegistry
。
我成功获得了一个会话,并且在调试后我可以看到它看起来配置正确,因此接口关联似乎正在工作;因此,我确信此错误与堆栈溢出建议的Type interface is not known...
问题不同。
我是myBatis的新手,但是从文档中我了解到,以下是使resultType自动映射生效所需的全部内容。
更新:当使用xml文件而不是按类映射映射器资源时也会发生这种情况。
public interface MyClassMapper{
MyClass getMyClass(Integer id);
}
public class MyClass{
private String itemValue;
public String getItemValue() {
return itemValue;
}
public void setItemValue(String itemValue) {
this.itemValue = itemValue;
}
}
<?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="myPackage.orm.sqlMap.MyClassMapper" >
<select id="getMyClass" resultType="myPackage.MyClass" >
select itemValue
from SOME_TABLE
WHERE id = #{id}
</select>
</mapper>
...
<mappers>
<mapper class="myPackage.MyClass" />
</mappers>
...
答案 0 :(得分:0)
修正:
public MyClass getMyClassValue(Integer id) throws Exception{
SqlSession session = MyBatisSessionFactory.openSession();
MyClassMapper mapper = (MyClassMapper) session.getMapper(MyClass.class);
return mapper.getMyClass(id);
}
以下是我用来执行查询的代码,发现我在mapper注册表中通过模型类名称而不是mapper接口名称查找映射器。现在工作得很好。
答案 1 :(得分:0)
在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。
希望有所帮助。
答案 2 :(得分:0)
我通过将映射器XML添加到mybatis xml配置文件
来解决了这个问题 <mappers>
<mapper resource="com/java/Mapper.xml"/>
</mappers>