2 hushenbin hushenbin 于 2014.12.15 20:22 提问

mybatis错误:Invalid bound statement (not found)万分感谢!

0.问题说明:
我是一名菜鸟,最近使用spring-mvc ,spring,mybatis框架
这两天出现一个错误一直搞不定,心好累,恳请前辈帮帮忙
1. 异常

 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.misscandy.inter.UserMapper.findAllUsers
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

2.我的配置文件

 <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:com/misscandy/mapper/*.xml" />
    </bean>

    <!-- 按指定包和注解扫描 Mapper/DAO -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        <property name="basePackage" value="com.misscandy.inter" />
        <property name="annotationClass" value="com.misscandy.mapper.Mapper" />
    </bean>

3.接口
UserMapper.java

 package com.misscandy.inter;

import java.util.Vector;

import com.misscandy.entity.User;
import com.misscandy.mapper.Mapper;


@Mapper
public interface UserMapper {
    void addUser(User user);
    //void deleteUser(User user);
    //void updateDept(User user);
    User findUserByName(String userName);
    Vector<User> findAllUsers();
    //List<Map<String, Object>> findValue();
    //List<DeptVO> findValues();
}

4.UserMapper.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!-- namespace -->
<mapper namespace="com.misscandy.inter.UserMapper">

    <!-- @1 resultMap
         @2 resultMap=""-->
    <resultMap id="userResultMap" type="com.misscandy.entity.User">
        <id property="userId" column="user_id" javaType="Integer" jdbcType="INTEGER" />
        <result property="userName" column="user_name" javaType="String"
            jdbcType="VARCHAR" />
        <result property="password" column="password" javaType="String"
            jdbcType="VARCHAR" />
        <result property="sex" column="sex" javaType="Integer"
            jdbcType="INTEGER" />
        <result property="age" column="age" javaType="Integer"
            jdbcType="INTEGER" />
        <result property="type" column="type" javaType="Integer"
            jdbcType="INTEGER" />
        <result property="lastLoginTime" column="last_login_time"
            javaType="Date" jdbcType="DATE" />
        <result property="imageSrc" column="image_src" javaType="String"
            jdbcType="VARCHAR" />
    </resultMap>

    <select id="findUserByName" parameterType="String" resultMap="userResultMap">
        <![CDATA[
        select user_id,user_name,image_src,age,sex,type from users where user_name = #{userName}
        ]]>
    </select>

    <select id="findAllUsers" resultMap="userResultMap">
        <![CDATA[
        select user_id,user_name,age,sex,type from users
        ]]>
    </select>

    <insert id="addUser" parameterType="com.misscandy.entity.User">
        <![CDATA[
        insert into users 
        (user_name,password,sex,age,type)
        values
        (#{userName},#{password},#{sex},#{age},1)
        ]]>
    </insert>

</mapper>


13个回答

hushenbin
hushenbin   2014.12.16 09:33
已采纳

<![CDATA[ ]]>

yang1464657625
yang1464657625   2016.08.01 16:27

一般是Mapepr.xml文件中文nameapce没有和mapper接口发生映射,导致mybatis绑定失败

u013857407
u013857407 厉害了,一下就解决了!
8 个月之前 回复
lu1112
lu1112 感谢
9 个月之前 回复
hack_uk
hack_uk 感谢!
9 个月之前 回复
wyyrockking
wyyrockking 谢谢
9 个月之前 回复
cosmoslei
cosmoslei 谢谢!
10 个月之前 回复
Mr_IT520
Mr_IT520 瞬间解决了,谢谢
10 个月之前 回复
qq_15691853
qq_15691853 瞬间解决问题了,多谢。
11 个月之前 回复
Balabala_0
Balabala_0 6
11 个月之前 回复
yang1464657625
yang1464657625 回复qq_29241343: My pleasure!
一年多之前 回复
qq_29241343
qq_29241343 thanks
一年多之前 回复
KPrajna
KPrajna   2015.05.01 14:42

还有一种情况是mybatis配置文件里面的mapper扫描路径配置不对,虽然mapper.xml文件已经copy到class目录下了,但是mybatis并没有去加载,验证办法就是将mapper.xml中的dao或者entity类名随便改成不存在的名称,一般这时候是不报错的.就是mybatis没有加载mapper文件.

解决办法是去看看mybatis配置里面的

    <property name="mapperLocations"
        value="classpath*:com/******/mappers/*Mapper.xml"></property>

是否是正确的路径

weixin_41470147
weixin_41470147 已解决,谢谢
5 个月之前 回复
pandoraliu
pandoraliu refactor 改了包的path 竟然没注意
5 个月之前 回复
gege87417376
gege87417376 这个坑确实有点深,掉进去几次了
9 个月之前 回复
Sdy_kinor
Sdy_kinor 我所有的路径 全都能点进去 但是还是有这个问题
大约一年之前 回复
qq_33469774
qq_33469774 完美的解决了我的问题,多谢
大约一年之前 回复
kstg3345159
kstg3345159 路径是正确的那么如何解决?
大约 3 年之前 回复
csdn_java_wxy
csdn_java_wxy   2015.11.10 18:14




注意value这个包地址一定要全,不能少,最好整个包名复制粘贴到value里。

这个namespace指向一定要正确,ctrl+鼠标左键能点进去才算OK。

这个parameterType属性不能写错,不同的语句有不同的属性

csdn_java_wxy
csdn_java_wxy mapperLocations的value值要正确,不能夹杂诸如;号其他字符
2 年多之前 回复
csdn_java_wxy
csdn_java_wxy sql的xml里insert或者select的id不能错,应该是接口的方法名,错的话也会出这个找不到接口方法的问题
2 年多之前 回复
csdn_java_wxy
csdn_java_wxy property name="basePackage"value="xxxx"对应第一句话,
2 年多之前 回复
qq_34502862
qq_34502862   2016.08.02 15:01

导致这个问题的情况真的是多种,我现在写我自己遇到这个问题是如何解决的,我就将mapper.xml里面的parameterMap改为了parameterType它就对了。

cwangjie
cwangjie 多谢多谢,我是初学者,就在这个地方出了问题。但是有一个疑问,就是我select语句写成了parameterMap,其他的并没有写错,为什么调用insert语句的时候也会报错?难道是先加载所有的语句,然后再执行每一个吗?
9 个月之前 回复
b116534401
b116534401   2017.09.10 01:46

遇到同样的问题,原因出在我用的maven身上。具体是maven在打包项目文件时没有把我dao目录下的mapper.xml打包进去,修改下pom.xml就好了。
中添加以下内容:


src/main/resources

/*.properties
/*.xml

false


src/main/java

/*.properties
/*.xml

false


问题解决

b116534401
b116534401 <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</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>
10 个月之前 回复
enhancing
enhancing   2017.06.14 11:20

如果mapper也分包的话,应该写成以下的形式(注意value部分):

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    <property name="dataSource" ref="dataSource" />  
    <!-- 自动扫描mapping.xml文件 -->  
    <property name="mapperLocations" value="classpath:priv/robson/test/mapping/*/*.xml"></property>  
</bean>  
lihui10061092
lihui10061092   2017.06.17 22:12

图片说明

qq_38712457
qq_38712457   2017.06.28 09:28

我也遇到了,我的是图片说明
改了一下就好了,太多了还是需要仔细认证的啊,不然随便一个问题都是错误

KH717586350
KH717586350   2017.11.21 09:51

pom.xml文件中在build下添加即可



src/main/java

/*.properties
/*.xml

false


共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mybatis错误: Invalid bound statement (not found) 怎么解决
在网上找了很多方法都没得到解决,由于我是同时采用的注解和xml的方法来配置mybatis的mapper…测试xml对应的mapper接口的方法就失败,单独用注解的方式就能测试成功,后来发现坑爹的是由于mapper接口和mapper.xml文件不在一个包里!!!由于我用的generator自动生成的dao类,默认就给我分到两个包去了,希望以后遇到这个问题的童鞋注意哦哦哦.
mybatis错误: Invalid bound statement (not found) ——原因之一
临近毕业了,毕业设计,赶赴的。今天在做毕设的时候发现了一个mybatis中的错误: Invalid bound statement (not found)
[Mybatis] 绑定声明无效 Invalidbound statement (not found)
[Mybatis] 绑定声明无效 Invalidbound statement (not found)   这是页面报出来的错误: HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.BindingException:Invalid bound statement
maven项目中 使用mybatis 出现 Invalid bound statement (not found) 错误原因之一
在做spring+mybatiss时,自动扫描都配置正确了,却在运行时出现了 Invalid bound statement (not found);这时需要确定项目启动之后 是否加载了 mybatis的xml,如果没有mybatis的xml,需在maven的pom文件中的节点下加:                                         src/main/jav
关于spring+mybatis多数据源,报Invalid bound statement的问题
(这里顺便插个简单的介绍,现在spring+mybitis的多数据源配置主要有两种方式。    一是采用spring配置文件直接配置多个数据源,此种方式的话,两个数据库的事务在不同的service中分别操作。           另一种是基于 AbstractRoutingDataSource 和 AOP 的多数据源的配置,此方式的特点是,可以在service中混合操作不同的数据源,需要哪个调
关于IDEA工具在springboot整合mybatis中出现的Invalid bound statement (not found)问题
第一次写博客。有点小激动。 笔者因为工作需要,所以需要学习springboot和springcloud,而开发工具则是公司要求使用的IDEA2017,笔者之前的开发工具是Myeclipse. 换了工具有诸多的不适应,还在慢慢的熟悉 在学习过程中难免有些磕磕碰碰,几天下来碰到了N个问题 一直有个想法,想把学习与工作过程中的错误与灵感都记录下来,却一直苦于没有什么时间而没去动笔 今天在学习s
有关mybatis的Invalid bound statement (not found)的解决办法
第二天学习springmvc和mybatis整合,写demo花了5个小时(主要自己扣配置文件,总忘,不熟悉)。然后再编写完demo后,出现了两个问题,一个是找不到路径。估计是我的web.xml配置出错,在加载全局环境变量的时候,同时加载了springmvc的主配置文件,今天就不重现错误了,优点类。 在第一个bug莫名其妙修复后,发现了第二个bug。错误信息是: 严重: Servlet.
mybatis invalid bound statement (not found) 当心文件确实不存在
前言:本人在将不适用maven的项目转化为maven项目后,遇到了 invalid bound statement (not found),百思不得其解,因为此前是可以运行的,而转为maven项目后,可以正常执行maven clean install 命令打包发布。但是访问具体某个controller后就会报出  invalid bound statement (not found)。 解决过程
mybatis异常:Invalid bound statement (not found)
时间:2017-12-21 异常:Invalid bound statement (not found) 情景:添加一个语句到mapper.xml中,部署项目后直接报错了,所有的mapper方法都不可用 原因: 在网上找了很多的贴子、博客,大多说的原因无非是配置的XML路径对不上、mapper映射的dao没有写入对应的方法、sql语法有问题、存在中文影响等等。一个个排查过去还是不能解决
[MyBatis]诡异的Invalid bound statement (not found)错误
自从开始使用Maven管理项目,最近在配置MyBatis的Mapper,在Eclipse上调试时都是正常的,但是最近把项目迁移到 IntelliJ IDEA 上后发现不管是直接用Jetty调试,还是打成war发布均报错。 根据错误提示初步判断是配置的问题,检查的Spring和MyBatis所有配置文件,甚至在SVN上回退了代码,可问题均没有解决;无奈暂时换回了Eclipse继续Coding…