1.创建学生服务接口实现类StudentServiceImpl
package net.wj.student.dao.impl;
import net.wj.student.bean.Student;
import net.wj.student.dao.StudentDao;
import net.wj.student.dbutil.ConnectionManger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.Vector;
/**
* 功能:学生数据访问接口实现类
* 作者:王洁
* 日期:2019年6月19日
*/
(1)插入学生记录
public class StudentDaoImpl implements StudentDao {
/**
* 插入学生记录
* @param student
* @return
*/
@Override
public int insert(Student student) {
//定义插入记录数
int count = 0;
//1.获得数据库连接
Connection conn = ConnectionManger.getConnection();
//2.定义SQL字符串
String strSQL = "insert into student(id,name,sex,age,department,class,phone)"+
"values(?,?,?,?,?,?,?)";
try {
//3.创建预备语句对象
PreparedStatement pstmt = conn.prepareStatement(strSQL);
//4.设置占位符的值
pstmt.setString(1,student.getId());
pstmt.setString(2,student.getName());
pstmt.setString(3,student.getSex());
pstmt.setInt(4,student.getAge());
pstmt.setString(5,student.getDepartment());
pstmt.setString(6,student.getClazz());
pstmt.setString(7,student.getPhone());
//5.执行SQL,返回插入记录数
count = pstmt.executeUpdate();
//6.关闭预备语句对象
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭数据库连接
ConnectionManger.closeConnection(conn);
}
//返回插入记录数
return count;
}
在test包里新建TestStudentImpl项目
package net.wj.student.test;
import net.wj.student.bean.Student;
import net.wj.student.dao.StudentDao;
import net.wj.student.dao.impl.StudentDaoImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* 功能:测试学生数据访问接口实现类
* 作者:王洁
* 日期:2019年6月19日
*/
对插入学生记录进行测试
结果为
(2)按学号删除学生信息
对其进行测试
结果为
(3)按班级删除学生信息
对其进行测试
结果为
(4)按系部删除学生信息
对其进行测试
结果为
因为信息工程学院的学生我们开始删除了,所以数据库中没有信息工程学院你的学生信息了,所以最后结果为删除失败。
(5)更新学生信息记录
对其进行测试
结果为
(6)按学生学号查询学生信息
对其进行测试
结果为
(7)按姓名查询学生信息
对其进行测试
结果为
(8)按班级查询学生信息
对其进行测试
结果为
(9)按系部查询学生信息
对其进行测试
结果为
(10)查询全部学生信息
对其进行测试
结果为
(11)按性别统计学生人数
对其进行测试
结果为
(12)按班级统计人数
对其进行测试
结果为
(13)按系部统计学生人数
对其进行测试
结果为
2.创建用户数据访问接口实现类UserDaoImpl
package net.wj.student.dao.impl;
import net.wj.student.bean.User;
import net.wj.student.dao.UserDao;
import java.util.List;
/**
* 功能:用户数据访问接口实现类
* 作者:王洁
* 日期:2019年6月19日
*/
public class UserDaoImpl implements UserDao {
@Override
public int insert(User user) {
return 0;
}
@Override
public int deleteById(int id) {
return 0;
}
@Override
public int update(User user) {
return 0;
}
@Override
public User findById(int id) {
return null;
}
@Override
public List<User> findAll() {
return null;
}
@Override
public User login(String username, String password) {
return null;
}
}
(1)插入用户数据
在test包下创建TestUserDaoImol项目并对其进行测试
package net.wj.student.test;
import net.wj.student.bean.User;
import net.wj.student.dao.UserDao;
import net.wj.student.dao.impl.UserDaoImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* 功能:测试用户数据访问接口实现类
* 作者:王洁
* 日期:2019年6月19日
*/
public class TestUserDaoImpl {
@Before
public void testBefore() {
System.out.println("单元测试开始了~");
}
@After
public void testAfter() {
System.out.println("单元测试结束了~");
}
结果为
(2)按id删除用户记录
对其进行测试
结果为
(3)更新用户记录
对其进行测试
结果为
(4)按id查询用户
对其进行测试
结果为
(5)查询所有用户
对其进行测试
结果为
(6)用户登录类
对其进行测试
结果为
3.服务接口
在net.wj.student下创建service包and各个服务接口
(1)学校服务接口CollegeService
(2)状态服务接口StatusService
(3)学生服务接口StudentService
(4)用户服务接口UserService
4.服务接口实现类
在net.wj.student.service下创建Impl实现类包
(1)学校服务接口实现类CollegeServiceImpl
①按id查询学校记录
在test包下新建测试服务接口实现类的项目
对其进行测试
结果为
②更新学校记录
对其进行测试
结果为
(2)状态服务接口实现类StatusServiceImpl
①按id查询状态
对其进行测试
结果为
在这里我发现了以前没有发现的问题
email的值是地址的值,可以修改到email的地方在StatusDaoImpl里,去查找后,发现address和email占位符的值都是address
对它进行修改
然后在TestStatusDaoImpl中运行测试更新
结果为
这里的email在前面测试时误导了我,因为我修改的值和原来的值一样,所以看到结果和我的值是一样的。哈哈,以后更新修改值的时候一定要和之前不一样啦
最后运行TestStatusServiceImpl结果为
②更新状态
对其进行测试
结果为
(3)学生服务窗口接口实现类StudentServiceImpl
package net.wj.student.servier.Impl;
import net.wj.student.bean.Student;
import net.wj.student.dao.StudentDao;
import net.wj.student.dao.impl.StudentDaoImpl;
import net.wj.student.servier.StudentService;
import java.util.List;
import java.util.Vector;
/**
* 功能:学生服务接口实现类
* 作者:王洁
* 日期:2019年6月20日
*/
public class StudentServiceImpl implements StudentService {
//声明学生数据访问对象
private StudentDao studentDao = new StudentDaoImpl();
@Override
public int addStudent(Student student) {
return studentDao.insert(student);
}
@Override
public int deleteStudentById(String id) {
return studentDao.deleteById(id);
}
@Override
public int deleteStudentByClass(String clazz) {
return studentDao.deleteByClass(clazz);
}
@Override
public int deleteStudentByDepartment(String department) {
return studentDao.deleteByDepartment(department);
}
@Override
public int updateStudent(Student student) {
return studentDao.update(student);
}
@Override
public Student findStudentId(String id) {
return studentDao.findById(id);
}
@Override
public List<Student> findStudentsByName(String name) {
return studentDao.findByName(name);
}
@Override
public List<Student> findStudentsByClass(String clazz) {
return studentDao.findByClass(clazz);
}
@Override
public List<Student> findStudentsByDepartment(String department) {
return studentDao.findByDepartment(department);
}
@Override
public List<Student> findAllStudents() {
return studentDao.findAll();
}
@Override
public Vector findRowsBySex() {
return studentDao.findRowsBySex();
}
@Override
public Vector findRowsByClass() {
return studentDao.findRowsByClass();
}
@Override
public Vector findRowsByDepartment() {
return studentDao.findRowsByDepartment();
}
}
①添加学生记录
对其进行测试
结果为
②按id删除学生记录
对其进行测试
结果为
③按班级删除学生记录
对其进行测试
结果为
④按系部删除学生记录
对其进行测试
结果为
⑤更新学生记录
对其进行测试
结果为
⑥按id查询学生记录
对其进行测试
结果为
⑦按姓名查询学生信息
对其进行测试
结果为
⑧按班级查询学生记录
对其进行测试
结果为
⑨按系部查询学生记录
对其进行测试
结果为
⑩查询全部学生记录
对其进行测试
结果为
⑪按性别统计学生人数
对其进行测试
结果为
⑫按班级统计学生人数
对其进行测试
结果为
⑬按系部统计学生人数
对其进行测试
结果为
(4)用户服务接口实现类UserServiceImpl
package net.wj.student.servier.Impl;
import net.wj.student.bean.User;
import net.wj.student.dao.UserDao;
import net.wj.student.dao.impl.UserDaoImpl;
import net.wj.student.servier.UserService;
import java.util.List;
/**
* 功能:用户服务接口实现类
* 作者:王洁
* 日期:2019年6月20日
*/
public class UserServiceImpl implements UserService {
/**
* 声明用户数据访问对象
*/
private UserDao userDao = new UserDaoImpl();
@Override
public int addUser(User user) {
return userDao.insert(user);
}
@Override
public int deleteUserById(int id) {
return userDao.deleteById(id);
}
@Override
public int updateUser(User user) {
return userDao.update(user);
}
@Override
public User findUserById(int id) {
return userDao.findById(id);
}
@Override
public List<User> findAllUsers() {
return userDao.findAll();
}
@Override
public User login(String name, String password) {
return userDao.login(name,password);
}
}
①插入用户记录
对其进行测试
这里有一个炒鸡大的问题
之前在net.wj.bean.User中定义Addtime的类型是Date
一般insert方法中插入时间就是当前时间
java.sql.Date与java.util.Date 的格式不同
这里将sql修改成util
后面在UserDaoImpl中设置占位符处将Addtime的值设置为Timestamp
这样在测试的时候使用currentTimeMillis方法获取了当前日期来设置Addtime的值
最后结果为
②按id删除用户记录
对其进行测试
结果为
③更新用户记录
对其进行测试
结果为
④按id查询学生信息
对其进行测试
结果为
⑤查询所有学生记录
对其进行测试
结果为
⑥登录用户
对其进行测试
结果为