今天在学mybatis和spring整合时一直报Invalid bound statement (not found)的问题
mybatis使用的是xml方式配置:
下面是指定的映射文件位置
<!--配置SqlSessionFactory工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:pub/zgq/mapper/*.xml"/>
</bean>
该映射文件处于项目这个位置
错误信息中猜测就是找不到该映射文件的感觉,上网查阅一番后,终于找到了原因
原因:
当使用IDEA编译器的时候,这样做其实是不行的,原因是IDEA编译后默认会把resource下的文件放到target的classpath下,但是src下的只有Java文件编译生成.class文件放入classpath下,其他文件会忽略的。
也就是说,放在mapper下的StudentMapper.xml是会被忽略的。
这个很有可能会报Invalid bound statement (not found)
解决方法:
解决方案就是让IDEA不要忽略src目录下的xml文件,在pom.xml文件中的<build></build>中添加代码
<!--解决idea不编译java里的xml--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources>