1.本项目中涉及两个实体类,分别是:
2.项目要求:实现ArrayList存放实体类对象并对其进行增删改查操作。
3.项目难点:若要向班级中添加一个学生,需要先判断是否存在该班级。
1.项目结构
2.创建实体类(model)
3.定义接口(dao) - 以StudentDao为例
4.创建工具类(util)- 以StudentUtil为例
//获取sid
public int getGid(String str){
System.out.println("请输入需要"+str+"的sid:");
int sid=in.nextInt();
return sid;
}
//获取Student对象
public Student getStudent(String str){
System.out.println(str+"学生");
System.out.println("请输入需要"+str+"的学生编号");
int sid=in.nextInt();
System.out.println("请输入需要"+str+"的学生姓名");
String name=in.next();
System.out.println("请输入需要"+str+"的学生性别");
String sex=in.next();
System.out.println("请输入需要"+str+"的学生年龄");
int age=in.nextInt();
System.out.println("请输入需要"+str+"的学生班级编号");
int gid=in.nextInt();
Student stu=new Student(sid,name,sex,age,gid);
return stu;
}
5.实现接口的方法(dao-Impl) - 以StudentDaoImpl为例
5.1创建ArrayList集合用于存放学生数据
List slist=new ArrayList<>();
5.2初始化
@Override
public void doInintStudent() {
//实例化学生类对象
Student stu1=new Student(1,"hl","女",22,185);
//将创建的对象存入集合中
slist.add(stu1);
Student stu2=new Student(2, "zyq","男",22,184);
slist.add(stu2);
}
5.3添加记录
实现方法: 从工具类中获取学生对象-获取其班级编号-查看该班级编号是否存在–存在则将该学生对象插入到学生集合中。
具体代码如下所示:
//实例ClassDaoImpl对象
ClassDao cd=new ClassDaoImpl();
@Override
public boolean doAddStudent(Student stu) {
try{
int pid=stu.getGid(); //获取输入的gid
if(cd.doSelectByPid(pid)){ //新增学生至班级前先判断是否存在该班级
slist.add(stu); //存在则添加该学生
System.out.println("新增成功!");
}
else {
System.out.println("该班级不存在!");
}
}catch (Exception e){
System.out.println(e);
}
return false;
}
其中ClassDaoImpl中doSelectByPid(int pid)方法与StudentDaoImpl中doSelectBySid(int sid)方法类似,具体见5.4节。
5.4 按sid单查
通过迭代器取出每条记录的sid并逐一与工具类中传入的sid进行比较。
@Override
public boolean doSelectBySid(int sid) {
try{
Iterator it=slist.iterator(); //将集合中数据存入it中
while (it.hasNext()){ //遍历集合
Student stu=(Student)it.next();
if(stu.getSid()==sid){
System.out.println(stu);
return true;
}
}
}catch (Exception e){
System.out.println(e);
}
return false;
}
5.5查看所有记录-通过遍历集合实现
@Override
public void doSelectAll() {
for (Student stu:slist){
System.out.println(stu);
}
}
5.6删除记录
与单查类似-只是将找到的记录通过remove方法删除
@Override
public boolean doDelStudent(int sid) {
try{
Iterator it=slist.iterator();
while(it.hasNext()){
Student stu=(Student)it.next();
if(stu.getSid()==sid){
slist.remove(stu);
return true;
}
}
}catch (Exception e){
System.out.println(e);
}
return false;
}
6.Service层 - 以StudentService为例
6.1定义接口(StudentService) - 与dao层接口同
6.2实现接口的方法
service层不做具体的方法实现,只需调用dao层的方法,以新增记录为例:
StudentDao dao=new StudentDaoImpl();
StudentUtil su=new StudentUtil();
@Override
public boolean doAddStudent(Student stu) {
if(dao.doAddStudent(stu)){
System.out.println("新增成功!");
return true;
}
System.out.println("新增失败!");
return false;
}