package?com.imooc.dao;
import?com.imooc.domain.Student;
import?org.junit.Test;
import?java.util.List;
public?class?StudentDAOImplTest?{
????@Test
????public?void?testQuery()?{
????????StudentDAO?studentDAO?=?new?StudentDAOImpl();
????????List<Student>?students?=?studentDAO.query();
????????for?(Student?student?:?students){
????????????System.out.println("id:"?+?student.getId()
????????????????????????????????+?",name:"?+?student.getName()
????????????????????????????????+?",age:"?+?student.getAge());
????????}
????}
}
package?com.imooc.dao;
import?com.imooc.domain.Student;
import?java.util.List;
/*
StudengDAO訪問接口
*/
public?interface?StudentDAO?{
?????/*
????查詢所有學(xué)生
?????*/
????public?List<Student>?query();
}
package?com.imooc.dao;
import?com.imooc.domain.Student;
import?com.imooc.util.JDBCUtil;
import?java.sql.Connection;
import?java.sql.PreparedStatement;
import?java.sql.ResultSet;
import?java.util.ArrayList;
import?java.util.List;
/*
StudentDAO訪問接口實現(xiàn)類
?*/
public?class?StudentDAOImpl?implements?StudentDAO{
????@Override
????public?List<Student>?query()?{
????????List<Student>?students?=?new?ArrayList<Student>?();
????????Connection?connection?=?null;
????????PreparedStatement?preparedStatement?=?null;
????????ResultSet?resultSet?=?null;
????????String?sql="select?*?from?student";
????????try?{
????????????connection?=?JDBCUtil.getConnection();
????????????preparedStatement?=?connection.prepareStatement(sql);
????????????resultSet?=?preparedStatement.executeQuery();
????????????Student?student?=?null;
????????????while?(resultSet.next())?{
????????????????int?id?=?resultSet.getInt("id");
????????????????String?name?=?resultSet.getString("name");
????????????????int?age?=?resultSet.getInt("age");
????????????????student?=?new?Student();
????????????????student.setId(id);
????????????????student.setName(name);
????????????????student.setAge(age);
????????????????students.add(student);
????????????}
????????}?catch?(Exception?e)?{
????????????e.printStackTrace();
????????}finally?{
????????????JDBCUtil.release(resultSet,preparedStatement,connection);
????????}
????????return?null;
????}
}
java.lang.NullPointerException at?com.imooc.dao.StudentDAOImplTest.testQuery(StudentDAOImplTest.java:14)
at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)
at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at?java.lang.reflect.Method.invoke(Method.java:498)
at?org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at?org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at?org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at?org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at?org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at?org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at?org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at?org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at?org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at?org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at?org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at?org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at?org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at?org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at?com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at?com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at?com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at?com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
報錯的是第一段代碼的for循環(huán),懷疑是賦值沒賦進(jìn)去,有沒有大佬幫我看一下
2018-07-31
不好意思,看錯了,你這個最后返回的是null,在foreach的時候?qū)ο鬄閚ull,所以報錯了
2019-01-17
2018-07-31
可以看一下圈紅的地方
2018-07-31
你這段類沒有實現(xiàn)接口啊,怎么使用多態(tài)調(diào)用方法的