遇到的问题和解决方法

遇到的问题:

问题1:

 java.lang.Exception: No runnable methods 
 at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)

解决方法:测试类上一定要有@Test。

问题2:如果是web工程,在pom.xml中需要指定

war

否则webapp没有小蓝点。

问题3

java.lang.ClassCastException: cn.itcast.web.ServletTest cannot be cast to javax.servlet.Servlet

解决方法:若引入servlet-api,jsp-api坐标,需在坐标中指定 范围

provided

provided是指在编译,测试有效;而运行时无效,这是为了防止和tomcat的jar包冲突

问题4

Cause: java.sql.SQLException: Data truncated for column 'birthday' at row 1

在插入一条记录时,例如:生日的类型不匹配。
解决方法: 自定义类型处理器,把java代码中的Date类型转换为数据库需要的long类型的毫秒值.


public class DateTypeHandler extends BaseTypeHandler {
    //设置从Java代码存储到数据库时的类型格式 Date->long
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        long time = date.getTime();
        preparedStatement.setLong(i,time);
    }
    //从数据库得到数据时显示的类型格式  long->Date
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        long time = resultSet.getLong(s);
        Date date = new Date(time);
        return date;
    }
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long time = resultSet.getLong(i);
        Date date = new Date(time);
        return date;
    }
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long time = callableStatement.getLong(i);
        Date date = new Date(time);
        return date;
    }
}
	
 
      
 

问题5

MySQL在创建外键时出现
 ERROR 1005: Can't create table (errno: 150)

解决方法
1、检查从表的外键字段的类型以及大小是否和主表的主键类型以及大小完全一致;

2、找不到引用的列,必须为primary key或者建立索引;

3、其中一个或两个表是MyISAM引擎的表,若想要使用外键约束,必须是InnoDB引擎。

问题6

java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport

解决方法:没有导入spring-jdbc坐标,需导入.


    org.springframework
    spring-jdbc
    5.0.5.RELEASE

问题7

javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>

原因:这是因为标签中的items被赋予了一个不能遍历的属性。
解决方法:错误演示:items="${pageBean.pageCount}" — 总页数不能遍历。可以这样:


正确演示:items="${pageBean.list}" ---- list是一个集合,可以遍历。

问题8
遇到的问题和解决方法_第1张图片
错误写法:


*原因:*参数类型为String类型时,参数有固定写法;
正确写法:
方法一:(value)
遇到的问题和解决方法_第2张图片
方法二:(_parameter)

遇到的问题和解决方法_第3张图片

问题9:

java.lang.IllegalStateException: Duplicate consumer configs: 

 and 

错误原因: 在dubbo的配置文件中配置了两个consumer。




解决方案:(没有注意到下面已经引入了) 删掉一个即可。

问题10:
当mybatis中映射文件的sql语句需要接收多个参数时,有四种方法:

方法一:将参数封装为map集合,设置sql标签的parameterType=“map”,values(…,…)里面写map集合的键,它会通过键获取值。

方法二:在mapper接口中使用@Param("…")注解,这时不需要设置sql标签中的参数类型,但是values(…,…)里面写的是注解中的字符串。

方法三:将多个参数封装为一个对象,设置sql标签的parameterType=“pojo对象”,values(…,…)里面写对象的属性。

方法四:mapper接口传递两个参数,设置sql标签的参数类型为int,映射文件中写values(#{param1},#{param2}) 或者 values(#{arg0},#{arg1})。

问题11:
Junit单元测试 : 实际上是不支持多线程的。
main方法 : 支持多线程。

未完待续…

你可能感兴趣的:(遇到的问题和解决方法)