第四次Java实训开始咯,上一次实现了用Java对数据库用户表的增删改查,这次老师让我们创建数据访问接口,我的实训内容如下:
第一步:
在net.zxl.student里创建dao包,在包内创建学校数据访问接口,状态数据访问接口,学生数据访问接口,用户数据访问接口
第二步:
创建数据访问接口实现类
在net.zxl.student.dao包里创建impl包,然后在里面创建学校数据访问接口实现类,然后创建测试类进行测试。
测试代码如下:
package net.zxl.student.test;
import net.zxl.student.bean.College;
import net.zxl.student.dao.CollegeDao;
import net.zxl.student.dao.impl.CollegeDaoImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class TestCollegeDaoImpl {
//创建学校数据访问接口对象
CollegeDao dao = new CollegeDaoImpl();
@Before
public void beforeTest(){ System.out.println("温馨提示:单元测绘开始咯~"); }
@After
public void afterTest(){ System.out.println("温馨提示:单元测试结束咯~"); }
@Test
public void testFindById(){
//调用学校数据访问对象的查找方法,获取学校对象
College college = dao.findById(1);
//输出学校信息
System.out.println("校名:"+college.getName());
System.out.println("校长:"+college.getPresident());
System.out.println("地址:"+college.getAddress());
System.out.println("邮箱:"+college.getEmail());
System.out.println("电话:"+college.getTelephone());
}
@Test
public void testUpdate() {
//调用学校数据访问对象的查询方法
College college = dao.findById(1);
//修改学校信息
college.setPresident("王洪礼");
//调用学校数据访问对象的更新方法
int count = dao.update(college);
//判断是否更新成功
if (count > 0) {
System.out.println("学校记录更新成功!");
System.out.println("新校长:" + dao.findById(1).getPresident());
} else {
System.out.println("学校记录更新失败!");
}
}}
效果图如下:
然后在里面创建状态数据访问接口实现类,然后创建测试类进行测试。
测试代码如下:
package net.zxl.student.test;
import net.zxl.student.bean.Status;
import net.zxl.student.dao.StatusDao;
import net.zxl.student.dao.impl.StatusDaoImpl;
import org.junit.Test;
public class TestStatusDaoImpl {
//声明状态数据访问对象
StatusDao dao = new StatusDaoImpl();
@Test
public void testFindById(){
//调用状态数据访问对象的查询方法
Status status=dao.findById(1);
//输出状态信息
System.out.println("作者:"+status.getAuthor());
System.out.println("学校:"+status.getCollege());
System.out.println("版本:"+status.getVersion());
System.out.println("地址:"+status.getAddress());
System.out.println("电话:"+status.getTelephone());
System.out.println("邮箱:"+status.getEmail());
}
@Test
public void testUpdate(){
//调用状态数据访问对象的查找方法
Status status = dao.findById(1);
//修改状态对象的属性
status.setAuthor("独孤求败");
status.setTelephone("18384566545");
status.setEmail("2418361578@qq.com");
//调用状态数据访问对象的更新方法
int count =dao.update(status);
//判断状态更新是否成功
if(count > 0){
System.out.println("状态记录更新成功!");
System.out.println(dao.findById(1));
}else{
System.out.println("状态记录更新失败!");
}
}
}
运行结果如下:
然后在里面创建学生数据访问接口实现类,然后创建测试类进行测试。
测试代码如下:
package net.zxl.student.test;
import net.zxl.student.bean.Student;
import net.zxl.student.dao.StudentDao;
import net.zxl.student.dao.impl.StudentDaoImpl;
import org.junit.Test;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
public class TestStudentDaoImpl {
//定义学生数据访问对象
StudentDao dao=new StudentDaoImpl();
@Test
public void testInsert(){
//创建学生对象
Student student =new Student();
//设置学生对象属性
student.setId("19242091");
student.setName("张晓辉");
student.setSex("19");
student.setDepartment("人文学院");
student.setClazz("2019数媒3班");
student.setTelephone("13456897454");
//调用学生数据访问对象的插入方法
int count = dao.insert(student);
//判断学生记录是否插入成功
if (count>0){
System.out.println("恭喜,学生记录插入成功!");
System.out.println(dao.findById(student.getId()));
}else{
System.out.println("遗憾,学生记录插入失败!");
}
}
@Test
public void testDeleteById(){
String id ="18102501";
//调用学生数据访问对象的按id删除方法
int count = dao.deleteById(id);
//判断学生记录是否删除成功
if(count>0){
System.out.println("恭喜,学生记录删除成功!");
}else{
System.out.println("遗憾,学生记录删除失败!");
}
}
@Test
public void testDeleteByClass(){
String clazz="19小教1班";
//调用学生数据访问对象的按班级删除方法
int count=dao.deleteByClass(clazz);
if(count>0){
System.out.println("恭喜,["+clazz+"]学生记录删除成功!");
}else{
System.out.println("遗憾,["+clazz+"]学生记录删除失败!");
}
}
@Test
public void testFindByName(){
String name="赵";
//调用学生数据访问对象的按姓名查找方法
List<Student> students=dao.findByName(name);
//判断列表里是否有元素
if(students.size()>0){
//通过增强for循环遍历学生列表
for(Student student:students){
System.out.println(student);}
}else{
System.out.println("温馨提示:查无此人!");
}
}
@Test
public void testFindAll(){
//调用学生数据访问对象的查找全部方法
List<Student> students=dao.findAll();
//通过增强for循环遍历学生列表
for(Student student:students){
System.out.println(student);
}
}
@Test
public void testFindRowsBySex(){
//调用学生数据访问对象的按性别统计人数方法
Vector rows=dao.findRowsBySex();
//获取向量的迭代器
Iterator iterator =rows.iterator();
//遍历迭代器
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
@Test
public void testDeleteByDepartment(){
String department="人文学院";
//调用学生数据访问对象的按班级删除方法
int count=dao.deleteByDepartment(department);
if(count>0){
System.out.println("恭喜,["+department+"]学生记录删除成功!");
}else{
System.out.println("遗憾,["+department+"]学生记录删除失败!");
}
}
@Test
public void testUpdate(){
//创建学生对象
Student student =new Student();
//设置学生对象属性
student.setId("19242091");
student.setName("张晓文");
student.setSex("19");
student.setDepartment("人文学院");
student.setClazz("2019数媒3班");
student.setTelephone("13456897454");
//调用学生数据访问对象的更新方法
int count = dao.insert(student);
//判断学生记录是否更新成功
if (count>0){
System.out.println("恭喜,学生记录更新成功!");
System.out.println(dao.findById(student.getId()));
}else{
System.out.println("遗憾,学生记录更新失败!");
}
}
@Test
public void testFindById(){
//调用用户数据访问对象的查找方法
Student student=dao.findById("18102502");
//输出用户信息
System.out.println("学号:"+student.getId());
System.out.println("姓名:"+student.getName());
System.out.println("年龄:"+student.getSex());
System.out.println("系部:"+student.getDepartment());
System.out.println("班级:"+student.getClazz());
System.out.println("电话:"+student.getTelephone());
}
@Test
public void testFindByClass(){
String clazz="19计应3班";
//调用学生数据访问对象的按姓名查找方法
List<Student> students=dao.findByClass(clazz);
//判断列表里是否有元素
if(students.size()>0){
//通过增强for循环遍历学生列表
for(Student student:students){
System.out.println(student);}
}else{
System.out.println("温馨提示:查无此人!");
}
}
@Test
public void testFindByDepartment(){
String department="信息工程学院";
//调用学生数据访问对象的按姓名查找方法
List<Student> students=dao.findByDepartment(department);
//判断列表里是否有元素
if(students.size()>0){
//通过增强for循环遍历学生列表
for(Student student:students){
System.out.println(student);}
}else{
System.out.println("温馨提示:查无此人!");
}
}
@Test
public void testFindRowsByClass(){
//调用学生数据访问对象的按班级统计人数方法
Vector rows=dao.findRowsByClass();
//获取向量的迭代器
Iterator iterator =rows.iterator();
//遍历迭代器
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
@Test
public void testFindRowsByDepartment(){
//调用学生数据访问对象的按系部统计人数方法
Vector rows=dao.findRowsByDepartment();
//获取向量的迭代器
Iterator iterator =rows.iterator();
//遍历迭代器
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
在创建学生数据访问接口实现类StudentDaoImpl中,要测试的东西很多,有对结果集的遍历,有设置占位符的值,有设置学生实体属性等等很多东西,很繁琐,要编写的代码也很多,出的错也不少。我分了几天时间来敲的。
运行效果图如下:
若这些整体测试,有可能会出错,因为运行一遍后再运行,会出现不能插入记录,原因是有主键存在。
然后创建用户数据访问接口实现类,然后进行测试,测试代码如下:
package net.zxl.student.test;
import net.zxl.student.bean.User;
import net.zxl.student.dao.UserDao;
import net.zxl.student.dao.impl.UserDaoImpl;
import org.junit.Test;
import java.util.Date;
import java.util.List;
public class TestUserDaoImpl {
//定义用户数据访问对象
UserDao dao = new UserDaoImpl();
@Test
public void testFindById(){
//调用用户数据访问对象的查找方法
User user =dao.findById(3);
//输出用户信息
System.out.println("用户名:"+user.getUsername());
System.out.println("密码:"+user.getPassword());
System.out.println("电话:"+user.getTelephone());
System.out.println("注册时间:"+user.getRegisterTime());
}
@Test
public void testLogin(){
String username,password;
username="魏无羡";
password="00000000";
//调用用户数据访问对象的登录方法
User user =dao.login(username,password);
//判断用户登录是否成功
if(user != null){
System.out.println("恭喜,用户名与密码正确,登陆成功!");
}else{
System.out.println("遗憾,用户名或密码错误,登录失败!");
}
}
@Test
public void testIsUsernameExisted(){
//定义用户名
String username="张伟";
//调用用户数据访问对象的用户名存在与否方法
boolean result =dao.isUsernameExisted(username);
//判断用户名是否存在
if(result){
System.out.println("温馨提示:["+username+"]已存在,不可用此名注册!");
}else{
System.out.println("温馨提示:["+username+"]不存在,可用此名注册!");
}
}
@Test
public void testInsert(){
//定义用户对象
User user=new User();
//设置用户属性
user.setUsername("张新");
user.setPassword("123321");
user.setTelephone("13645542210");
user.setRegisterTime(new Date());
//调用用户数据访问对象的插入方法
int count=dao.insert(user);
//判断用户记录是否插入成功
if(count>0){
System.out.println("恭喜,用户记录插入成功!");
System.out.println(dao.findById(dao.findAll().size()));
}else{
System.out.println("遗憾,用户记录插入失败!");
}
}
@Test
public void testDeleteById(){
int id =1;
//调用用户数据访问对象的按id删除方法
int count = dao.deleteById(id);
//判断用户记录是否删除成功
if(count>0){
System.out.println("恭喜,用户记录删除成功!");
}else{
System.out.println("遗憾,用户记录删除失败!");
}
}
@Test
public void testUpdate() {
//调用用户数据访问对象的查询方法
User user = dao.findById(6);
//修改用户信息
user.setPassword("123");
//调用用户数据访问对象的更新方法
int count = dao.update(user);
//判断是否更新成功
if (count > 0) {
System.out.println("学校记录更新成功!");
} else {
System.out.println("学校记录更新失败!");
}
}
@Test
public void testFindAll(){
//调用用户数据访问对象的查找全部方法
List<User> users=dao.findAll();
//通过增强for循环遍历用户列表
for(User user:users){
System.out.println(user);
}
}
}
在运行过程中,出现如下错误:
最后发现是数据库记录里没有用户编号为6的用户,最后修改,更新成功:
用户测试完成:
以上内容不只是用一天来做的,感觉很累,但是收获很多的,期待下一次实训。