首先就是在网上找到的这几个办法:
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看一眼比对项目结构就了然了
然而,上述几个办法一一试过之后发现,没用!!
最后又经过高强度的百度后有个发现了一个原因:文件目录未对齐。
如果你的mapper和其对应的xml不是写在一起,将xml写在resources中的话,你编译后注意项目中target文件夹,注意里面的mapper是否和xml编译到了一起。
如果没有编译到一起,那你就要注意了是否路径出现了问题!!!打开文件的目录查看你resources下xml的路径是否和你mapper里的路径一样。
我的项目在 mapper.java 与 mapper.xml 文件的文件目录修改统一后,项目就能够正常运行,不再报错。但是在其他项目中同样的目录却没有出现报错,很奇怪,有可能是这个项目Maven依赖版本冲突的问题。
最后,还是那句话,代码规范很重要。