一对多(老师->学生)

一对多(老师->学生)

在这里插入图片描述
在这里插入图片描述

创建实体类

package bean;
//多方
public class Student1 {
    
    
    private int stuid;
    private String stuname;
    private int teacherid;

    public int getStuid() {
    
    
        return stuid;
    }

    public void setStuid(int stuid) {
    
    
        this.stuid = stuid;
    }

    public String getStuname() {
    
    
        return stuname;
    }

    public void setStuname(String stuname) {
    
    
        this.stuname = stuname;
    }

    public int getTeacherid() {
    
    
        return teacherid;
    }

    public void setTeacherid(int teacherid) {
    
    
        this.teacherid = teacherid;
    }
}

package bean;

import java.util.List;

//一方
public class Teacher {
    
    
    private int pid;
    private String tname;
    //在一方创建存储多方信息的集合
    private List<Student1> studentList;

    public int getPid() {
    
    
        return pid;
    }

    public void setPid(int pid) {
    
    
        this.pid = pid;
    }

    public String getTname() {
    
    
        return tname;
    }

    public void setTname(String tname) {
    
    
        this.tname = tname;
    }

    public List<Student1> getStudentList() {
    
    
        return studentList;
    }

    public void setStudentList(List<Student1> studentList) {
    
    
        this.studentList = studentList;
    }
}

定义dao接口

package dao;

import bean.Teacher;

public interface TeacherDao {
    
    
    //1.定义操作方法
    //2.定义一个根据老师id查询老师信息(学生的信息)
    public Teacher getById(int tid);
}

定义实现类

package dao.impl;

import bean.Student1;
import bean.Teacher;
import dao.TeacherDao;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class TeacherDaoImpl implements TeacherDao {
    
    
    @Override
    public Teacher getById(int tid) {
    
    
        //造作数据库
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
    
    
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取链接
            String useName = "root";
            String passWard = "123456";
            String url = "jdbc:mysql://localhost:3306/mysql01?serverTimezone=UTC";
            connection = DriverManager.getConnection(url, useName, passWard);
            //3.定义SQL,创建预状态通道(进行SQL语句的发送)
            String sql = "select * from student1 s,teacher t where s.teacherid = t.tid and t.tid = ?";
            preparedStatement = connection.prepareStatement(sql);
            //然后,给占位符赋值(下标,内容),从1开始
            preparedStatement.setInt(1,tid);
            //resultSet = statement.executeQuery("select * from student where stuname = ? and password = ?");//executeQuery(sql)执行查询语句
            //4.取出结果集信息
            resultSet = preparedStatement.executeQuery();
            Teacher teacher = new Teacher();
            List<Student1> student1s = new ArrayList<Student1>();
            while (resultSet.next()){
    
    
                //1.取出信息
                teacher.setPid(resultSet.getInt("tid"));
                teacher.setTname(resultSet.getString("tname"));
                Student1 student1 = new Student1();
                student1.setStuid(resultSet.getInt("stuid"));
                student1.setStuname(resultSet.getString("stuname"));
                //2.建立学生和老师之间的关系
                student1s.add(student1);
            }
            teacher.setStudentList(student1s);
            return teacher;
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                if (connection != null) {
    
    //connection.notnull
                    connection.close();
                }
                if (resultSet != null) {
    
    
                    resultSet.close();
                }
                if (preparedStatement != null) {
    
    
                    preparedStatement.close();
                }
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }
        }


        return null;
    }
}

定义测试类

package test;

import bean.Student1;
import bean.Teacher;
import dao.*;
import dao.impl.TeacherDaoImpl;

import java.util.List;

public class Demo01 {
    
    
    public static void main(String[] args) {
    
    
        TeacherDaoImpl teacherDao = new TeacherDaoImpl();
        Teacher byId = teacherDao.getById(1);
        System.out.println(byId.getTname());
        List<Student1> studentList = byId.getStudentList();
        for (Student1 student1 : studentList) {
    
    
            System.out.println("\t"+student1.getStuname());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/m0_56187876/article/details/115427165