Mybatis在idea中错误:Invalid bound statement (not found)

学习mybatis的过程中,测试mapper自动代理的时候一直出错,在eclipse中可以正常运行,而同样的代码在idea中却无法成功。虽然可以继续调试,但心里总是纠结原因。百度了好久,终于找到一个合适的原因。参考:http://blog.csdn.net/z69183787/article/details/48933481;

原因:(参考:http://www.linuxidc.com/Linux/2015-06/118877.htm)

IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。

如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。Hibernate和Spring有时会将配置文件放置在src目录下,编译后要一块打包进classes文件夹,所以存在着需要将xml等资源文件放置在源代码目录下的需求。

解决:

方法1:将xml或properties等配置文件放到resource下,并修改获取配置文件的代码,比如注册mapper.xml的位置等;

方法2:在maven中添加过滤:

 1  <!--配置Maven 对resource文件 过滤 -->
 2         <resources>
 3             <resource>
 4                 <directory>src/main/resources</directory>
 5                 <includes>
 6                     <include>**/*.properties</include>
 7                     <include>**/*.xml</include>
 8                 </includes>
 9                 <filtering>true</filtering>
10             </resource>
11             <resource>
12                 <directory>src/main/java</directory>
13                 <includes>
14                     <include>**/*.properties</include>
15                     <include>**/*.xml</include>
16                 </includes>
17                 <filtering>true</filtering>
18             </resource>
19         </resources>

我采用mybatis的自动代理设置,将mapper文件和xml文件同名同包下,并在sqlMap.xml(mybatis-config.xml)中配置mapper自动注册扫描包:

 1 <mappers>
 2         <mapper resource="sqlmap/User.xml"/>
 3         <!--通过resource方法一次加载一个映射文件 -->
 4          <!--<mapper resource="sqlmap/UserMapper.xml"/>-->
 5         
 6         <!-- 通过mapper接口加载单个 映射文件
 7         遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
 8         上边规范的前提是:使用的是mapper代理方法
 9          -->
10          <!--<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>-->
11         
12         <!-- 批量加载mapper
13         指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
14         遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
15         上边规范的前提是:使用的是mapper代理方法
16          -->
17         <package name="cn.itcast.mybatis.mapper"/>
18 
19     </mappers>

测试通过,解决了心头的疙瘩。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

Android Push Notification实现信息推送功能

Android Push Notification实现信息推送功能 在之前的一篇文章中提到在Android中实现推送方式的解决方案,其中一个比较成熟的解决...

2595
来自专栏安全运维

Windows MySQL服务配置、重置密码

800
来自专栏白驹过隙

Jenkins - 持续集成环境搭建

36910
来自专栏散尽浮华

centos6下ActiveMQ+Zookeeper消息中间件集群部署记录

由于最近一个项目并发请求压力比较大,所以考虑改进架构,引入消息中间件集群作为一个缓冲消息队列,具体需求: 1)将大量的WebService请求报文发送到mq集群...

2769
来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1253
来自专栏cloudskyme

android环境搭建

今天看了一下android编程方面的知识,开始以为很麻烦,可是仔细一看,全是java方面的知识,对于搞了这么多年的我来说简直就是小菜一碟,简单至极,下面一步一步...

3445
来自专栏Ryan Miao

CentOS7下安装mysql5.6修改字符集为utf8并开放端口允许远程访问

前言 mysql最初的免费战略已经深入人心,感觉自己一直都在用mysql。今天在centos7下装mysql。发现原来centos下默认没有mysql,因为开始...

5078
来自专栏jeremy的技术点滴

使用create-react-app简化前端项目的建立

3905
来自专栏我的博客

查找修改时间在指定区间的文件并打包

#!/bin/bash # find file and tar # joyousphper@gmail.com # find_and_tar.sh read ...

2523
来自专栏Ken的杂谈

CentOS 7下Tomcat 安装与配置(Tomcat开机启动)

如果系统默认的JDK版本是JDK 1.8.x,那么可以省略此步骤 如果系统中需要部署多Tomcat,例如:Tomcat 7+JDK 7,Tomcat 8 + J...

1142

扫码关注云+社区