最近在学习mybatis逆向工程课程时,在逆向生成mapper和model层,并写了一个查询接口,试运行时,却出现错误,浏览器页面显示如下:
idea控制台报错如下:
错误信息为:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.springboot012mybatis02.mapper.StudentMapper.selectByPrimaryKey
翻译为无效的绑定语句(未找到)
我的mybatis自动生成的定义操作数据库的sql映射文件mapper.xml,在项目中位于mapper层下:
点击target查看项目构建后的目录,在mapper文件夹下却没有发现mapper.xml
看来,逆向工程自动生成的映射文件mapper.xml没有被编译啊。
因为映射文件被放在了java目录下,该目录下只有.java文件才会被编译。
解决方案一
在pom.xml中手动指定.xml为资源文件
具体操作:在
src/main/java
**/*.xml
然后一定要点击右上角的加载Maven变更
再次运行项目,发现错误消失了
解决方案二
由于我的项目结构中,资源文件都在resources目录下,因此我们可以在resources目录下建一个mapper目录,将
mapper.xml文件移动到mapper目录下。
进行完这一步,重新运行,发现还是会报同样的错误
这是因为你进行移动操作之后,还得在核心配置文件里告诉mybatis一声,你搬家搬到哪里去了:
在application.properties里添加如下说明:
#指定mybatis映射文件的路径 mybatis.mapper-locations=classpath:mapper/*.xml
然后重新运行,错误消失



