项目场景:
在学习SSM的路上老是遇见奇奇怪怪的报错,弄这些错误花费了巨大的精力,于是打算记录一下希望对正在学习的大家有帮助
第一个Mybatis项目
问题描述
错误提示如下:
org.apache.ibatis.binding.BindingException: Type interface com.qfedu.dao.StudentDAO is not known to the MapperRegistry.
---
# 原因分析:
//mapper包下的StudentMapper.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="com/qfedu/dao/StudentDAO.java">
<insert id="insertStudent">
insert into tb_students(stu_num,stu_name,stu_gender,stu_age)
value(#{stuNum},#{stuName},#{stuGender},#{stuAge})
</insert>
<delete id="deleteStudent">
delete from tb_students where stu_num=#{stuNum}
</delete>
</mapper>
最后发现是mapper包下的<mapper namespace路径格式不对,
<mapper namespace="com/qfedu/dao/StudentDAO.java">是错误的(这是来自根源的路径)
<mapper namespace="com.qfedu.dao.StudentDAO">才是正确的(这是复制引用)
# 正确格式:
<?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="com.qfedu.dao.StudentDAO">
<insert id="insertStudent">
insert into tb_students(stu_num,stu_name,stu_gender,stu_age)
value(#{stuNum},#{stuName},#{stuGender},#{stuAge})
</insert>
<delete id="deleteStudent">
delete from tb_students where stu_num=#{stuNum}
</delete>
</mapper>