用单个 SQL 句子填充包含另一个 pojo 的数组列表的 pojo 并正确迭代结果集

Fill a pojo that contains an arraylist of another pojo with a single SQL sentence and properly iterate resultset

在我的项目中我有这个 POJO class:

CourseBean.java:

@Expose
private Integer id;
@Expose
private String title = "";
@Expose
private String description = "";
@Expose
ArrayList<SubjectBean> alSubjects = new ArrayList();

它包含课程的列 table 和一个数组列表,其中包含代表本课程主题的其他 pojo。

要填充此 pojo,我使用的过程如下:

  1. 我造了两句SQL:第一个通过ID获取课程和 第二个让所有科目都被同一门课程过滤 身份证.
  2. 现在填充 pjo 我有一个填充方法来迭代第一个结果集和内部 迭代第二个

可以优化那个程序吗?也许只有一个 SQL 句子?

--------------------------------编辑------------ --------------------------

我将使用@Patrick Piatkowski 提出的声明

SELECT * FROM Course
JOIN Subject
ON Course.id = Subject.course_id
WHERE /* Your filters here */

但是现在这让我想到了另一个问题。当我迭代结果集时,课程的列在每一行中都是相同的。

this.setId(oResultSetCourse.getInt("id")); this.setTitle(oResultSetCourse.getString("title")); this.setDescription(oResultSetCourse.getString("description"));

那些应该只填充一次,同时每次迭代都应该填充主题的 pojo

处理此问题的最佳方法是什么?

您可以使用联接:

SELECT * FROM Course
JOIN Subject
ON Course.id = Subject.course_id
WHERE /* Your filters here */

或者

SELECT * FROM Subject
WHERE course_id IN 
    (SELECT course_id FROM Course
    WHERE /* Your filters here */)

第二种方法的优点是您仅从 Subject 获取列,同时您还使用第一个语句从 Course 获取列。