我目前正在学习在我的项目中使用Dao
模式。我知道,一个表相当于一个Dao
,我是对的吗?就像StudentDao
,SubjectDao
一样。
每个Dao
在其关联的表中执行CRUD
操作,但我的问题是,如何为连接的表创建DAO
?假设我有一个查询来加入学生和主题表,那么如何为此创建DAO
?
我应该将它放到StudentDao
吗?还是SubjectDao
?或者在这种情况下有一个很好的做法?
答案 0 :(得分:11)
DAO - Data Access Object
是Object
,只能与数据库通信。因此,如果您想要JOIN
两个表格,那么您必须在DTO Object
上的SubjectDTO
StudentDTO参考中找到。
public class StudentDTO {
private String name;
private String surname;
private String age;
private SubjectDTO subject;
// getters, setters
}
所以,SubjectDTO
public class SubjectDTO {
private String name;
private int room;
// getters, setters
}
而DAO
可能如下所示:
public StudentDAO {
private final String SELECT_QUERY = "SELECT * FROM Student S JOIN Subject Sb ON (S.id = Sb.id)"
public ArrayList<StudentDTO> getData() {
ArrayList<StudentDTO> data = null;
StudentDTO member = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = OracleDAOFactory.getConnection();
ps = con.prepareStatement(SELECT_QUERY);
rs = ps.executeQuery();
while (rs.next()) {
member = new StudentDTO();
member.setName(rs.getString(1));
...
data.add(member);
}
return data;
}
catch (SQLException ex) {
// body
}
finally {
if (con != null) {
con.close();
}
}
}
}
我建议您查看一些教程。
此致