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 链表之间的区别
- 关联-association
- 集合-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文件里有重复的代码重复 了三次