java实训第三次课总结

19计应3班赖晓桐
  • 上次课完成了实体类:College、Student、Status、User
    接口类:CollegeDao、StudentDao、StatusDao、UserDao
  • 并且对user做了一些简单的增删改查以及登录的操作,这次课的任务是创建数据访问接口实现类。
  • 首先创建CollegeDaoImpl、StudentDaoImpl、StatusDaoImpl、UserDaoImpl类继承自CollegeDao、StudentDao、StatusDao、UserDao接口并继承改写其中的方法。
  • 然后再创建testCollegeDaoImpl、testStudentDaoImpl、testStatusDaoImpl、testUserDaoImpl类l来实现CollegeDaoImpl、StudentDaoImpl、StatusDaoImpl、UserDaoImpl类中的方法:(举例)

java实训第三次课总结_第1张图片
在test中测试实现Impl方法中的功能,代码很多,但各个方法之间大同小异,照着老师的代码敲几个,自己背着敲几个,可以提升自己对代码的熟悉程度以及对代码的理解程度。遇到错误是必不可免的,找出它,改正它。

- 错误1:

java实训第三次课总结_第2张图片
能插入成功,但是运行完会报错,回到UserDaoImpl中检查代码,发现结果集的关闭与预备语句的关闭放到while循环里了,导致出错java实训第三次课总结_第3张图片
把rs.close()和stmt.close()放在花括号外面就可以了

  • 错误2:

java实训第三次课总结_第4张图片
提示MySQL出错,回到UserDaoImpl检查代码,发现是SQL语句写错了,这种小错误犯了都有点好笑。
java实训第三次课总结_第5张图片

  • 错误3:

在第一个错误出现时,我的第一个解决办法是把findall方法中的while换成了if,解决了当时的问题。
java实训第三次课总结_第6张图片
java实训第三次课总结_第7张图片
但在实现testfindall时出错了,结果集只有一条记录,并不是预想中的结果。
因为findall方法中没有了循环,所以实现testFindAll方法是不能迭代。把rs.close()和stmt.close()放在花括号外面,把if换回while,第一个错误与第3个错误就都解决了。
java实训第三次课总结_第8张图片

  • 错误4:

按理说应该显示插入的新记录的详细信息,但却返回一个null
java实训第三次课总结_第9张图片
java实训第三次课总结_第10张图片
到Navicat中一看,发现ID断层了,由代码上看,首先把所有记录找出来再调用size()函数计算长度,这个长度就应该是新插入的记录的ID,但由于我之前进行了一操作,导致ID并不连续,长度与ID不一致,就找不到记录了。把ID改回去就可以了。

你可能感兴趣的:(java实训第三次课总结)