为什么SelectionDaoImpl中的内容导致测试出错?
来源:3-9 持久层实现——SelectionDAO
电磁护盾
2020-09-08 17:17:32


这里测试CourseDaoImpl中的方法,如果注释掉SelectionDaoImpl中的所有内容,程序正常,加上SelectionDaoImpl中的内容,就会导致测试CourseDaoImpl中的方法时出错。
4回答
同学你好,
1、根据错误信息SelectionDaoImpl类中有错误。同学看一下SelectionDaoImpl类中是否导入了相关包。如下:

2、老师运行同学的代码并没有出现问题。如下:

建议同学关闭IDEA,重新打开试试。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
电磁护盾
提问者
2020-09-08
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/selection_course?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!--配置目标类======================--> <!--<bean id="studentDao" class="com.imooc.sc.dao.impl.StudentDaoImpl"/>--> <context:component-scan base-package="com.imooc.sc"/> </beans>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imooc</groupId>
<artifactId>sc</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<spring.version>4.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
电磁护盾
提问者
2020-09-08
package com.imooc.sc.entity;
public class Course {
private int id;
private String name;
private int score;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Course{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
'}';
}
public Course() {
}
public Course(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
}
package com.imooc.sc.entity;
import java.util.Date;
public class Selection {
private int sid;
private int cid;
private Date selTime;
private int score;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public Date getSelTime() {
return selTime;
}
public void setSelTime(Date selTime) {
this.selTime = selTime;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
package com.imooc.sc.entity;
import java.util.Date;
public class Student {
private int id;
private String name;
private String sex;
private Date born;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBorn() {
return born;
}
public void setBorn(Date born) {
this.born = born;
}
@Override
public String toString() {
return "Student{"+id+","+name+","+sex+","+born+"}";
}
public Student() {
}
public Student(int id, String name, String sex, Date born) {
this.id = id;
this.name = name;
this.sex = sex;
this.born = born;
}
}
package com.imooc.sc.test;
import com.imooc.sc.dao.impl.CourseDaoImpl;
import com.imooc.sc.dao.impl.StudentDaoImpl;
import com.imooc.sc.entity.Course;
import com.imooc.sc.entity.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class Test1 {
@Resource(name = "studentDao")
/* @Autowired*/
private StudentDaoImpl studentDao;
@Resource(name = "courseDao")
private CourseDaoImpl courseDao;
@Test
public void demo1() {
System.out.println("studentDao:"+studentDao);
/*Student student = studentDao.select(1003);
System.out.println(student);*/
List<Student> students = studentDao.selectAll();
System.out.println(students);
/*studentDao.insert(new Student(2002, "赵云", "男", null));*/
/*studentDao.update(new Student(2002, "赵云1", "女", null));*/
/*studentDao.delete(2002);*/
}
@Test
public void demo2(){
System.out.println("studentDao:"+studentDao);
System.out.println("courseDao:"+courseDao);
Course course = courseDao.select(1001);
System.out.println(course);
/*List<Course> courses = courseDao.selectAll();
System.out.println(courses);*/
/*courseDao.insert(new Course(1004,"数学",6));*/
/*courseDao.update(new Course(1004,"物理",7));*/
/*courseDao.delete(1004);*/
}
}
电磁护盾
提问者
2020-09-08
package com.imooc.sc.dao.impl;
import com.imooc.sc.dao.CourseDao;
import com.imooc.sc.entity.Course;
import com.imooc.sc.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository("courseDao")
public class CourseDaoImpl implements CourseDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(Course course) {
String sql = "insert into course(name,score) values(?,?)";
jdbcTemplate.update(sql, course.getName(), course.getScore());
}
public void update(Course course) {
String sql = "update course set name=?,score=? where id=?";
jdbcTemplate.update(sql, course.getName(), course.getScore(), course.getId());
}
public void delete(int id) {
String sql = "delete from course where id=?";
jdbcTemplate.update(sql, id);
}
public Course select(int id) {
String sql = "select * from course where id=?";
return jdbcTemplate.queryForObject(sql, new CourseRowMapper(), id);
}
public List<Course> selectAll() {
String sql = "select * from course";
return jdbcTemplate.query(sql, new CourseRowMapper());
}
private class CourseRowMapper implements RowMapper<Course> {
public Course mapRow(ResultSet resultSet, int i) throws SQLException {
Course course = new Course();
course.setId(resultSet.getInt("id"));
course.setName(resultSet.getString("name"));
course.setScore(resultSet.getInt("score"));
return course;
}
}
}package com.imooc.sc.dao.impl;
import com.imooc.sc.dao.SelectionDao;
import com.imooc.sc.entity.Selection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Repository
public class SelectionDaoImpl implements SelectionDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(List<Selection> seles) {
String sql = "insert into selection values(?,?,?,?)";
List<Object[]> list = new ArrayList<Object[]>();
for (Selection sel : seles) {
Object[] args = new Object[4];
args[0] = sel.getSid();
args[1] = sel.getCid();
args[2] = sel.getSelTime();
args[3] = sel.getScore();
list.add(args);
}
jdbcTemplate.batchUpdate(sql, list);
}
public void delete(int sid, int cid) {
String sql = "delete from selection where student=? and course=?";
jdbcTemplate.update(sql, sid, cid);
}
public List<Map<String, Object>> selectByStudent(int sid) {
String sql = "select se.*,stu.name sname,cou.name cname from selection se"+
"left join student stu on se.student=stu.id"+
"left join course cou on se.course=cou.id"+
"where student=?";
return jdbcTemplate.queryForList(sql, sid);
}
public List<Map<String, Object>> selectByCourse(int cid) {
String sql = "select se.*,stu.name sname,cou.name cname from selection se"+
"left join student stu on se.student=stu.id"+
"left join course cou on se.course=cou.id"+
"where course=?";
return jdbcTemplate.queryForList(sql, cid);
}
}package com.imooc.sc.dao.impl;
import com.imooc.sc.dao.StudentDao;
import com.imooc.sc.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository("studentDao")
public class StudentDaoImpl implements StudentDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(Student stu) {
String sql = "insert into student(name,sex,born) values(?,?,?)";
jdbcTemplate.update(sql, stu.getName(), stu.getSex(), stu.getBorn());
}
public void update(Student stu) {
String sql = "update student set name=?,sex=?,born=? where id=?";
jdbcTemplate.update(sql, stu.getName(), stu.getSex(), stu.getBorn(), stu.getId());
}
public void delete(int id) {
String sql = "delete from student where id=?";
jdbcTemplate.update(sql, id);
}
public Student select(int id) {
String sql = "select * from student where id=?";
return jdbcTemplate.queryForObject(sql, new StudentRowMapper(), id);
}
public List<Student> selectAll() {
String sql = "select * from student";
return jdbcTemplate.query(sql,new StudentRowMapper());
}
private class StudentRowMapper implements RowMapper<Student>{
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student stu = new Student();
stu.setId(resultSet.getInt("id"));
stu.setName(resultSet.getString("name"));
stu.setSex(resultSet.getString("sex"));
stu.setBorn(resultSet.getDate("born"));
return stu;
}
}
}package com.imooc.sc.dao;
import com.imooc.sc.entity.Course;
import com.imooc.sc.entity.Student;
import java.util.List;
public interface CourseDao {
void insert(Course course);
void update(Course course);
void delete(int id);
Course select(int id);
List<Course> selectAll();
}package com.imooc.sc.dao;
import com.imooc.sc.entity.Selection;
import java.util.List;
import java.util.Map;
public interface SelectionDao {
void insert(List<Selection> seles);
void delete(int sid, int cid);
// List<Selection> selectByStudent(int sid);
// List<Selection> selectByCourse(int cid);
List<Map<String,Object>> selectByStudent(int sid);
List<Map<String,Object>> selectByCourse(int cid);
}package com.imooc.sc.dao;
import com.imooc.sc.entity.Student;
import java.util.List;
public interface StudentDao {
void insert(Student stu);
void update(Student stu);
void delete(int id);
Student select(int id);
List<Student> selectAll();
}相似问题