当提示找不到xml文件等找不到文件的情况是,查看target文件夹里是否生成了对应文件,没有生成,可以有以下6种方法解决,从上往下进行,一个方法不行就试试另外一个。
1)Build—>Build Module’模块名’
2)右键pom.xml—>Maven—>Reload Project
3)点击界面右侧Maven -->Lifecycle—>点击clean—>再点击compile
4)File—>Invalidate Caches(清除缓存文件并重启)
5)手动把缺失的文件拷入target文件夹内
6)重启IDEA
更新
1.遇到,cannot find resource com.xxx.xxx.xxxxml 文件报错。
1)首先检查target里是否有这个文件,没有就按上面的6种方法修复,一次不出现可以多试几次,也可以关了IDEA再打开。
2)如果 target里也有这个文件,那可能是我刚遇到的问题了。找了半天,原来是mybatis.xml文件里mapper里的路径用了 ’ . ’ 点 做分割,应该换为 ’ / ’
例如
<mappers>
<!-- 第一个,错误示范,使用 . -->
<!-- <mapper resource="com.gys.dao.StudentDao.xml"/>-->
<!-- 第二个,正确示范,使用 / -->
<mapper resource="com/gys/dao/StudentDao.xml"/>
</mappers>
需要注意的是,在写sql语句的xml文件里,mapper里的namespace用的是’ . ’
虽然原则上namaspace想写什么都行,只要在用SqlSession执行sql语句时传入的是namespace + ’ . '+要执行的sql语句的id即可,但namesapce标准的写法还是写:dao接口的全限定名称
<mapper namespace="com.gys.dao.StudentDao">
<!-- #{studentId}:占位符,表示从java程序中传入的数据-->
<select id="selectStudentId" resultType="com.gys.domain.Student">
select id,name,pwd from User where id=#{studentId}
</select>
<!-- 通过#{student对象的属性名}来传入固定位置-->
<insert id="insertStudent">
insert into User values(#{id},#{name},#{pwd})
</insert>
</mapper>