Java根据主表查子表

在关系型数据库中,通常会存在主表和子表的关系。主表用来存储某个实体的基本信息,而子表则用来存储主表实体的相关信息。在Java中,我们经常需要根据主表的信息来查询子表的数据,以便获取更全面的信息。

本文将介绍如何使用Java来根据主表查找子表的数据,并提供相应的代码示例。我们将以一个简单的学生和成绩表为例来演示这个过程。

关系图

erDiagram
    STUDENT {
        int student_id
        string name
    }
    SCORE {
        int score_id
        int student_id
        int score
    }
    STUDENT ||--o{ SCORE : has

以上是我们示例中的关系图,学生表和成绩表之间是一对多的关系,一个学生可以对应多个成绩。

查询子表数据的方法

在Java中,我们通常会使用SQL语句来查询数据库中的数据。下面是一个简单的查询子表数据的方法:

public List<Score> getScoresByStudentId(int studentId) {
    List<Score> scores = new ArrayList<>();

    try (Connection connection = DriverManager.getConnection(url, username, password);
         PreparedStatement statement = connection.prepareStatement("SELECT * FROM SCORE WHERE student_id = ?")) {
        statement.setInt(1, studentId);
        ResultSet resultSet = statement.executeQuery();

        while (resultSet.next()) {
            Score score = new Score();
            score.setScoreId(resultSet.getInt("score_id"));
            score.setStudentId(resultSet.getInt("student_id"));
            score.setScore(resultSet.getInt("score"));
            scores.add(score);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return scores;
}

在这个方法中,我们通过传入学生的ID来查询该学生的成绩数据。首先建立数据库连接,然后准备一个SQL语句,使用PreparedStatement来设置参数,并执行查询操作。查询结果会被封装成Score对象并存储在一个List中返回。

示例代码

接下来我们将展示如何调用上述方法来查询学生的成绩数据。

public static void main(String[] args) {
    int studentId = 1;
    List<Score> scores = getScoresByStudentId(studentId);

    for (Score score : scores) {
        System.out.println("Score ID: " + score.getScoreId());
        System.out.println("Student ID: " + score.getStudentId());
        System.out.println("Score: " + score.getScore());
        System.out.println();
    }
}

在这段示例代码中,我们传入学生ID为1来查询该学生的成绩数据,并将结果打印输出。这样我们就可以根据主表学生表来查询对应的子表成绩表数据。

总结

通过本文的介绍,我们学习了如何使用Java来根据主表查询子表的数据。通过建立数据库连接,准备SQL语句,并执行查询操作,我们可以轻松地获取主表对应的子表数据。这种方法可以帮助我们更好地理解数据之间的关系,提高数据操作的效率和准确性。希望本文对你有所帮助,谢谢阅读!