ssm使用过程中出现的错误总结

1. Unable to convert string [${user.createTime}] to class [java.util.Date] for attribute [value]:

不能识别EL表达式
解决isELIgnored="false"

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>

2.'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapterInstantiation of bean failed;拦

截器异常
查看自己的spring和Jackson版本问题

3.依赖注入失败的原因

Mapper.xml中又有错误
依赖的jar有问题,
版本冲突

4.java.lang.AbstractMethodError:org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Intege

Mybatis-spring版本

<!-- mybatis/spring包 -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.0</version>
</dependency>

5.实体类一定要和接口有关联

6.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘id’ in ‘class java.lang.Integer’

原因: 在DAO方法中定义的参数 与 实体中定义的属性不一致 导致的。

解决
若是没有if test的判断这不需要用@Param
第一种: 调整DAO代码调整,XML代码不变
Users findUserById(@Param("id") Integer id);

第二种: dao层不变,xml变
<if test="id != null">中的 id改为 _parameter

7.updateByPrimaryKeySelective和updateByPrimaryKey区别

在abator中可生成iBatis的代码。其中,Sql_map中带有的两个函数是:
updateByPrimaryKeySelective
updateByPrimaryKey
前者只是更新新的model中不为空的字段。
后者则会将为空的字段在数据库中置为NULL。

8.insert和insertSelective

insert就是把所有值插入,此时数据库中有default值,default值就不起作用了
如果选择insert 那么所有的字段都会添加一遍,即使有的字段没有值
insertSelective不会忽略default值。
但是如果使用inserSelective就会只给有值的字段赋值(会对传进来的值做非空判断)

9.提交from表单,如果controller用实体类接收,

在实体类中一定要有构造,无参方法,有几个参数的方法,需要几个对应有几个参数的方法
public users(){}
public user(Integr id){this.id = id;}

10.配置两个视图解析器只访问jsp

把InternalResourcceViewResolver放在freemarker后边,并且优先级设置相同(这里都把order设为0)

11.加上项目名通过转发不能访问静态资源

方法一:${pageContext.request.contextPath}/css/reset.css
方法二:/项目名称/css/demo.css
方法三:css/demo.css

12.@Autowired的使用dao层,有红色波浪线

@Autowired和@Resource的区别,
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。
@Resource相对而言更精确些,它功能上相当于@Autowired和@Qualifier(“名称”) 的组合。
@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
  @Resource装配顺序
  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

13、association和collection 链表之间的区别

  1. 关联-association
  2. 集合-collection
    association是用于一对一和多对一,而collection是用于一对多的关系

14、使用拦截器出现:404,304

第一种:Controller方法重名了
第二种:设置的拦截器,把资源拦截后就会出现304

<!--    配置拦截器-->
<mvc:interceptors>
    <mvc:interceptor>
        <!--            要拦截的具体方法-->
        <mvc:mapping path="/**"/>
        <!--对以下内容不拦截-->
        <mvc:exclude-mapping path="/css/**"/>
        <mvc:exclude-mapping path="/images/**"/>
        <mvc:exclude-mapping path="/js/**"/>
        <!--            配置拦截器对象-->
        <bean class="com.ssm.interceptor.Myinterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

15.登录成功后需要将值写入session,往session中写值的方法是下面的方法,不仅仅是model.addAttribute还需在控制器类名上加

在这里插入图片描述

16.使用js跳转时,在springmvc中没有得到很好的解决,最后是用一个页面作为跳转的桥梁,实现frameset整体跳转的功能

<script type="text/javascript">parent.location.href="http://localhost:8888/ssmfirst/loginOut";</script>

17.使用Aop一定注意要先开启

<!--    开启aop注解-->
<aop:aspectj-autoproxy/>

18、Aop报错ProceedingJoinPoint is only supported for around advice

这是因为在返回后通知(@AfterReturning)和抛出异常后通知(@AfterThrowing)的方法中不能使用ProceedingJoinPoint,
使用JoinPoint即可解决

19、java.sql error ‘0000-00-00 00:00:00’

这个时间是不合法的,没有这个时间,mysql默认不合法

20、 Result Maps collection already contains value for com.ssm.dao.CategoryMapper.BaseResultMap

因为是用了逆向工程,三次所以xml文件里有重复的代码重复 了三次

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值