排错:Mybatis Invalid bound statement (not found): com.XXXX.dao.mapper.UserDao.selectAllUser

出现 这种 问题 明显 是 mapper.xml文件 没有被 加载 。

SqlSessionFactoryBean 并没有加载到对应的mapper xml文件,当然执行方法的时候也就找不到dao所对应的mapper,而无法执行对应的sql,查看maven target 的classes目录下也并没有mapper的xml文件出现。

原因:mapper文件并不是放在resource中,而是在java目录,maven编译的时候并没有把xml文件编译进来。 
解决:在pom文件中添加resource编译

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

 

 
 

 

参照网上的几点建议,也有 可能 有一些别的 原因  : 
1、<mapper namespace="com.prcsteel.peanut.dao.UserDao"> 
mapper文件namespace和dao路径对应

2.UserDao的方法在UserMapper.xml中没有,然后执行UserDao的方法会报此

3、UserDao的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultType!

4、如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决…

 

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

转载于:https://www.cnblogs.com/OneDirection/articles/8126439.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值