在我的项目中,我有这个 POJO 类:
CourseBean.java:
@Expose
private Integer id;
@Expose
private String title = "";
@Expose
private String description = "";
@Expose
ArrayList<SubjectBean> alSubjects = new ArrayList();
它包含类(class)表的列和一个数组列表,其中另一个 pojo 代表本类(class)的主题。
为了填充这个pojo,我使用的过程如下:
- 我做了两个SQL语句:第一个通过ID获取类(class), 第二个是让所有科目都由同一门类(class)过滤 身份证号。
- 现在为了填充 pjo,我有一个填充方法来迭代第一个结果集和内部 迭代第二个
可以优化该过程吗?也许用一个 SQL 语句?。
----------------------------------编辑------------------------ ------------------------
我将使用 @Patrick Piatkowski 建议的声明
SELECT * FROM Course
JOIN Subject
ON Course.id = Subject.course_id
WHERE /* Your filters here */
但是现在这让我想到了另一个问题。当我迭代结果集时,类(class)的列在每一行中都是相同的。
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 */)
第二种方法的优点是您仅从主题中获取列,同时还可以使用第一个语句从类(class)中获取列。
关于java - 用单个 SQL 语句填充一个包含另一个 pojo 的数组列表的 pojo,并正确迭代结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099009/