解决Mybatis中出现的Invalid bound statement (not found)问题

目录

 

背景

问题

问题描述

加载映射文件有四种方式

原始文件目录

问题位置

解决方法

配置成功后

总结

注意


背景

在配置SpringMVC项目的过程中,同一个项目在eclipse上能运行,页面也能正常显示,但是在idea上就会运行该项目识就会出现Invalid bound statement (not found)问题,期间不知道问题是什么原因造成的的,导致无法正确定位问题,还爬了很对坑,现在将问题记录下来,惊醒自己。

问题

问题描述

在访问一个页面时弹出一下提示:

Invalid bound statement (not found): org.loushang.fdemoramework..user.dao.UserMapper.findAll

加载映射文件有四种方式

1.resource方式加载映射文件

<mappers>
	<!-- 这是resource方式加载配置文件  -->
	<mapper resource="sqlmap/UserMapper.xml"/>
</mappers>

2.class方式:这里需要注意:接口类和映射文件放在同一个目录下,并文件名要一致

<mappers>
	<!-- class方式加载配置文件:class指定的是 mapper接口的地址
		但是这时候就需要将接口类 和映射文件放在同一个目录下-->
	<mapper class="com.mo.mapper.UserMapper"/>
</mappers>

3.包扫描加载映射文件 : 接口类 和映射文件放在同一个目录下,并文件名要一致

<mappers>
	<!-- 批量mapper的扫描 -->
	<package name="com.mo.mapper"/>
</mappers>

4.使用本地文件(不推荐)

<mappers>
	<mapper url="file:///c:/mapper/UserMapper.xml"/>
</mappers>

原始文件目录

问题位置

当使用IDEA编译器的时候,这样做其实是不行的,原因是IDEA编译后默认会把resource下的文件放到target的classpath下,但是src下的只有Java文件编译生成.class文件放入classpath下,其他文件会忽略的。

也就是说,放在mapper下的StudentMapper.xml是会被忽略的。

这个很有可能会报Invalid bound statement (not found)

解决方法

其实这些问题在eclipse中是不会出现的,解决方案就是让IDEA不要忽略src目录下的xml文件,在pom.xml文件中添加代码

   <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

配置成功后

Build——>Rebuild Project

更新文件

成功后发现在目录中出现了UserMapper.xml文件

总结

配置一个项目问题还是很多,需要多家努力,勤奋学习啊!!!

注意

如果团队用Git来管理项目,同步的时候就会出现问题。一个人eclipse一个人用IDEA的话,eclipse可以通过接口加载映射文件,而且Mapper类和Mapper.xml文件可以放在同一目录下。但是IDEA不行,IDEA需要在pom.xml再进行配置。这一方面也要注意,最好就是使用同一款编辑器,也可以避免其他的麻烦。

参考原文:https://blog.csdn.net/doctor_ly/article/details/83000745  

  • 47
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值