学习MyBatis遇到了一个问题,在运行测试类时遇到报错
Mapped Statements collection does not contain value for findUserInfoByid
这条信息中我首先关注的就是“findUserInfoByid”,因此注意到以下代码块
public void testFindUserInfoByid() {
//通过sqlSession执行映射文件中定义的SQL,并返回映射结果
UserInfo ui = sqlSession.selectOne("findUserInfoByid",1);
//打印输出结果
System.out.println(ui.toString());
}
由错误猜测,文件映射并没有成功,因此检查mapper.xml,
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserInfoMapper">
<!-- 根据用户编号查询用户信息 -->
<select id="findUserInfoById" parameterType="int" resultType="UserInfo">
select * from user_info where id= #{id}
</select>
</mapper>
可以发现单词拼写有误,两处分别是findUserInfoById和findUserInfoByid,纠正后代码可正常运行