# 项目场景:
运行 IDEA 时出现错误
# 问题描述:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.mysportjava.dao.UserDao.getUserByMassage |
# 原因分析:
映射文件拼写错误
# 解决方案:
1 问题实质: dao 层 (又叫 mapper 接口) 跟 mapper.xml 文件没有映射
2 问题原因:出现这种映射问题的原因分为低级原因和更低级原因两种
更低级原因:
(1) dao 层的方法和 mapper.xml 中的方法不一样;
(2) mapper 中的 namespace resultParameter 和对应的 dao 层 entity 层不一样
(3) 拼写错误 如漏写 少写 多写....
上述这些原因都会导致两者不能映射 这些检查和修正的工作自己来吧不会的百度就行
低级原因: spring 配置文件中关于 mybatis 的与 xml 文件路径寻找相关的配置没有写
导致调用 dao 层方法时,没有寻找 dao.xml 文件的正确路径 结果 dao 迷路了 从而两者无法映射
3 解决思路:把 dao.xml (或 mapper.xml) 路径配置写好!!!!
既然出发点 (dao) 已经确定,目的地 (dao.xml/mapper.xml) 也确定了
想到到达就必须画一条到 dao.xml 的路
4 解决步骤:
(1) 打开 spring-context.xml 配置文件
(2) 找到 class 为 org.mybatis.spring.SqlSessionFactoryBean 这个 bean
(3) 找到 name 为 mapperLocations 的 property
(4) 在 list 标签中添加一个 value
例如:
<value>classpath:/info/mappings/**/*.xml</value>
重启,问题解决!!!
注:classpath 是配置好的类路径 要想知道表示什么 最简单的方式是参考其他 list 看一眼比对项目结构就了然了