MyBatis-Spring的整合,配置Mapper的过程中遇到的异常

项目中用的是spring3.0.5,MyBatis3.0.5,整合mybatis,spring用的是mybatis-spring-.1.0.1。在这个过程中,遇到了一个配置上的问题,就是配置Mapper时的错误,在运行时抛出如下异常:

Exception in thread "main" java.lang.IllegalArgumentException : Mapped Statements collection does not contain value for cn.xxxx.mail.webmail.dao.UserMapper.getUserById
一看就知是Mapper配置出错了。仔细检查过了,
1、我是用:<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.xxxx.mail.webmail.dao.mapper"/>
    </bean>让spring自动加载mapper配置的,这个没错。

2、UserMapper.java接口和UserMapper.xml同名,且在同一路径下,这个没错。
     我的UserMapper.java有个方法是:public User getUserById(String id);

问题就出在这里了,我在UserMapper.xml中配成了这样:
<select id="getUser" resultType="cn.xxxx.mail.webmail.model.User" parameterType="java.lang.String">
      select * from users where id=#{value}
  </select>
在配置文件中的select 的id写错了,写成getUser,没和UserMapper.java的方法同名


经过这次,得出如下结论:
1、mapper的java文件和mapper的xml配置文件要同名,同路径

2、mapper的java文件的方法名称和mapper的xml配置文件的id要同名称

3、mapper配置文件的namespace要全名,不能只写包名
     如:cn.xxxx.mail.webmail.dao.mapper.UserMapper,这时,namespace不能写 成:cn.xxxx.mail.webmail.dao.mapper

你可能感兴趣的:(jsp)