mybatis遇到的问题

mybatis报错

错误内容如下:

Invalid bound statement (not found): com.a.mapper.UserMapper.getlist

分析问题原因:

mybatis出现这个问题,通常是由Mapper interface和对应的xml文件的定义对应不上引起的,这时就需要仔细检查对比包名、xml中的namespace、接口中的方法名称等是否对应。我之前就因为称忘记在xml标签的id属性中添加方法名或写错方法名而出现这个错误。

出现这个错误时,按以下步骤检查一般就会解决问题:
1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;
2:检查xml的namespace是否和xml文件的package名称一一对应;
3:检查方法名称是否与id内容一致;
4:去除xml文件中的中文注释;
5:随意在xml文件中加一个空格或者空行然后保存。

“随意在xml文件中加一个空格或者空行然后保存”,看起来这么怪异的解决方式,实际上是触发了IDE的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(MyEclipse经常出这个问题),有时候你源目录中的xml文件已经修改好了,而class所在的目录里面还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录。

错误之一:

发现JB通过maven把项目打成war包,或者Eclipse通过使用maven命令tomcat7:deploy远程自动部署项目打成的war包,war包里面缺少Mapper对应的xml文件,也就是没有把xml文件打包进去。解决办法是,在pom.xml文件中的build标签中添加如下代码,显示的强制将xml文件打到war包中

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

错误之二:

还有种情况会出这个错误,比如配置xml映射文件需要满足特定要求:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"  
    p:dataSource-ref="dataSource"  p:configLocation="classpath:mybatis-config.xml">
    <property name="mapperLocations">
        <list>
            <value>classpath*:mapper/com/xxx/**/*Mapper.xml</value>
            <value>classpath*:dao/com/xxx/**/*Mapper.xml</value>
        </list>
    </property>
 </bean>

如上只有Mapper结尾的xml文件才会被Mybatis扫描到,这个时候如果忘记了这个规则,xml使用了其他名称,如xxxDao.xml。这样xml的配置就不会加入到Mybatis存储配置的一个map对象里去,也会出现 Invalid bound statement 的错误。解决方法就是把xml文件改名即可。

对我而言:

可恶的是忘了将mapper中id的属性与接口中方法名字对应起来~~~~~~~~~一失手成千古恨

最近喜欢上了写博客,以前错误是在笔记上写的,但是感觉乱糟糟的,以后有道专心记笔记,这里写自己的学习心得,遇到的问题,以及解决方法等,这样也可以让更多遇到困难的人得到帮助,一举两得呀.最后感谢这位大佬的总结,相信能给各位一点帮助.
作者:michael_wlq
链接:https://www.jianshu.com/p/800fe918cc7a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值