zoukankan      html  css  js  c++  java
  • 实体之间的对应关系

    一:众所周知,实体之间的对应关系一般分为四种

    1. 一对一
    2. 一对多
    3. 多对一
    4. 多对多

    今天主要学习了两种(一对多)和(多对一) 此处用学生和学生的年级两个人表来举例

    (多对一):多个学生隶属于一个年级 

    //学生表的实体类
    1 public class Student implements Serializable {  
    2     private static final long serialVersionUID=2070056025956126480L;
    3   private int StudentNo;
    4   private String StudentName;
    5   private Grade grade;  //年级表的实体类对象    多对一的关系,这里就声明一个单一的对象
    6 }

    //年级表的实体类

     public class Grade {
         private int gradeId;
         private  String gradeName;
        private   List<Student> students;    //学生表的实体类对象,一对多的关系,因为一个年级有许多个学生,所以用泛型集合来保存数据
    }

    //比如我们要查询所有学生记录,其中要包含学生的年级年级名称


    public
    List<Student> SelectGrade() { String sql="Select StudentNo,studentName,GradeName from Student inner join Grade on Student.GradeId=Grade.GradeID"; ResultSet resultSet = selectALL(sql); //BaseDao类的查询方法     try{ while(resultSet.next()){ //遍历resultSet里面的数据 Student student=new Student(); Grade grade=new Grade(); //创建年级实体类的对象 grade.setGradeName(resultSet.getString("GradeName")); //给年级类对象的年级名称赋值 student.setGrade(grade);    //将grade赋值给Student类的grade student.setStudentNo(resultSet.getInt("StudentNo")); student.setStudentName(resultSet.getString("StudentName")); studentList.add(student);    //把student对象添加到集合当中 } }catch (Exception e){ e.printStackTrace(); } return studentList; }

    //测试类
    List<Student> students2 = gradeService.selectGrade(); //调用查询方法,获取返回的泛型集合
    System.out.println("学生编号 学生姓名 年纪名称");
    for (Student stu:students2){                //遍历集合中的数据
    System.out.println(stu.getStudentNo()+" "+stu.getStudentName()+" "+stu.getGrade().getGradeName());
    }


    //查询S1年级下的学生记录

     1  public Grade SelectS1Student() {
     2         String sql="SELECT StudentNo,studentName,GradeName FROM Student INNER JOIN Grade ON Student.GradeId=Grade.GradeID " +
     3                 "WHERE GradeName='S1')";
     4         ResultSet resultSet = selectALL(sql);
     5         List<Student> studentList=new ArrayList<>();
     6         Grade grade=new Grade();     //创建一个Grade对象,一个对象为一个年级
     7         try{
     8             while (resultSet.next()){
     9                 Student student=new Student();    //循环创建多个学生对象,一个对象代表一个学生
    10                 student.setStudentName(resultSet.getString("studentName"));
    11                 student.setStudentNo(resultSet.getInt("studentNo"));
    12                 grade.setGradeName(resultSet.getString("GradeName"));
    13                 studentList.add(student);      //将学生对象添加到集合中
    14 
    15             } 
    16             grade.setStudents(studentList);      //给Grade类的对象赋值
    17       
    18         }catch (Exception e){
    19             e.printStackTrace();
    20 
    21         }
    22 
    23         return grade;
    24     }

    //测试类
    Grade grade = gradeService.SelectS1Student();   //返回一个Grade对象
    System.out.println("学生编号 学生姓名 年纪名称");  
    for (Student stu:grade.getStudents()){ //遍历Grade对象中的集合,从而拿到该年级下的所有学生
    System.out.println(stu.getStudentNo()+" "+stu.getStudentName()+" "+ grade.getGradeName());
    }


    一对一以及多对多的实现类的创建和上面基本上类似,

  • 相关阅读:
    javascript cookie
    mark几个比较好的配色网站
    Javascrip 淡入淡出思路
    实验报告:统计字符串中子字符串出现的次数
    Javascript计算器
    《node入门》学习
    配置ionic(低版本)
    eclipse环境配置
    关于文档加载的方法
    javascript基础-《web前端最佳实践》
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/10943972.html
Copyright © 2011-2022 走看看