我目前正在学习在项目中使用Dao
模式的方法。我知道,一个表等于一个Dao
,对吗?就像StudentDao
,SubjectDao
。
每个Dao
在其关联表中执行CRUD
操作,但是我的问题是,如何为联接表创建DAO
?可以说我有一个查询来连接学生表和主题表,然后如何为此创建一个DAO
?
我应该把它放到StudentDao
吗?还是SubjectDao
?或在这种情况下有好的做法?
最佳答案
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();
}
}
}
}
我建议您检查一些教程。
问候
关于join - 如何为联接表创建DAO?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10793915/