为什么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(); }
相似问题