一对多(老师->学生)
创建实体类
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());
}
}
}