hushenbin
super_bin
2014-12-15 12:22
采纳率: 66.7%
浏览 183.9k
已采纳

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
    super_bin 2014-12-16 01:33
    已采纳

    <![CDATA[ ]]>

    点赞 评论
  • KH717586350
    捏捏小脸蛋 2017-11-21 01:51

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



    src/main/java

    /*.properties
    /*.xml

    false


    点赞 2 评论
  • KPrajna
    不敢起真名 2015-05-01 06: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>
    

    是否是正确的路径

    点赞 评论
  • csdn_java_wxy
    专业删库跑路 2015-11-10 10:14




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

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

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

    点赞 评论
  • yang1464657625
    ZERONELOVE 2016-08-01 08:27

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

    点赞 评论
  • qq_34502862
    qq_34502862 2016-08-02 07:01

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

    点赞 评论
  • enhancing
    wolfhoo 2017-06-14 03: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 14:09

    我也遇到了,解决方法:Mapper.xml中的sql语句的id必须与Dao中的方法名一致,否则无法映射。 所以就找不到方法了。 遇到这个问题的同学可以试试

    点赞 评论
  • lihui10061092
    lihui10061092 2017-06-17 14:12

    图片说明

    点赞 评论
  • qq_38712457
    qq_38712457 2017-06-28 01:28

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

    点赞 评论
  • qq_39049692
    qq_39049692 2017-09-11 09:12

    我把ClassesMapper.xml改成ClassesDao.xml,和接口ClassesDao.java名字一样就好了。
    щ(゜ロ゜щ)

    点赞 评论
  • qq_23897253

    给补充一种我刚遇到的,我最后两接口mapper中写了,但是没有sql语句,完了一样也是这错,找了半天,MD,不信的可以试试。

    点赞 评论
  • b116534401
    MythUp 2017-09-09 17:46

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


    src/main/resources

    /*.properties
    /*.xml

    false


    src/main/java

    /*.properties
    /*.xml

    false


    问题解决

    点赞 评论

相关推荐