bean包
一方:Teacher类
package bean;
import java.util.List;
//一方
public class Teacher {
private int tid;
private String tname;
//在一方创建存储多方数据的集合
private List<Student> studentList;
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public List<Student> getStudentList() {
return studentList;
}
public void setStudentList(List<Student> studentList) {
this.studentList = studentList;
}
}
多方:Student类
package bean;
//多方
public class Student {
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;
}
}
dao包
TeacherDao接口
package dao;
import bean.Teacher;
public interface TeacherDao {
//定义操作方法
//1.定义一个根据老师id查询老师信息(学生的信息)
public Teacher getById(int tid);
}
TeacherDaoImpl类
package dao.impl;
import bean.Student;
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 pps = null;
ResultSet resultSet = null;
try {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获得链接
String userName = "root";
String password = "root";
String url = "jdbc:mysql://localhost:3306/yhp3?serverTimezone=UTC";
connection = DriverManager.getConnection(url,userName,password);
//3.定义sql,创建 预 状态通道(进行sql语句的发送)
String sql = "select * from student s,teacher t where s.teacherid = t.tid and t.tid = ?"; //? 英文符号,用来表示占位
pps = connection.prepareStatement(sql);
//给占位符赋值 括号里面跟(下标,数值) 下标从1开始
pps.setInt(1,tid);//根据表中数据给setXxx()
//执行sql
resultSet = pps.executeQuery(); //executeQuery(sql)执行增删改时使用
//集合存这个泛型
List<Student> students = new ArrayList<>();
Teacher teacher = new Teacher();
while(resultSet.next()){
//1.取出各自的信息
teacher.setTid(resultSet.getInt("tid"));
teacher.setTname(resultSet.getString("tname"));
Student student = new Student();
student.setStuId((resultSet.getInt("stuid")));
student.setStuName(resultSet.getString("stuname"));
//2.建立学生和老师之间的关系
students.add(student);
}
teacher.setStudentList(students);
return teacher;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
//5.关闭资源
if (resultSet != null) {
resultSet.close();
}
if (pps != null) {
pps.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
}
}
test包
package test;
import bean.Student;
import bean.Teacher;
import dao.TeacherDao;
import dao.impl.TeacherDaoImpl;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
TeacherDao dao = new TeacherDaoImpl();
Teacher teacher = dao.getById(1);
System.out.println("老师姓名:"+teacher.getTname());
List<Student> studentList = teacher.getStudentList();
for(Student student : studentList){
System.out.println("\t studentname=" +student.getStuName());
}
}
}
依据图
学生信息
老师信息
一对多
控制台执行结果