唉。真的是醉了。被这个问题耽误了一天的时间,根据报错的提示,一直在在找错误,一直以为是注解错误,可是最后的错误却是mapper.xml 中的<mapper namespace="com.gu.ssm.dao.user.UserMapper">我把它写成了<mapper namespace="com/gu/ssm/dao/user/UserMapper">。。。。。还好是把错误找到了。。。。。真的是为自己的粗心付出了惨痛的代价。
这里把我找到的注解错误的解决办法整理一下,以防万一。
整体来说是,先看web.xml有没有写
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>和
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
即是要在web.xml中加载applicationContext-*.xml和springmvc-config.xml 。classpath:代表根目录,我把配置文件放在了根目录了。
然后在看applicationContext-*.xml, <context:component-scan base-package="com.ssm.controller"/>
<context:component-scan base-package="com.ssm.service"/>
<context:component-scan base-package="com.ssm.dao"/>和 <tx:annotation-driven/><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ssm.dao"></property>
</bean>
接着springmvc-config.xml, <mvc:annotation-driven></mvc:annotation-driven>
<!-- 设置使用注解的类所在的jar包 ,DispatcherServlet上下文,只搜索@Controller标记的类-->
<context:component-scan base-package="com.ssm.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<context:component-scan base-package="com.ssm.service"/>
还有就是mapper.java和mapper.xml需要看一下是否映射正确,名字,方法名,namespace属性值格式。