我目前正在学习如何Dao在我的项目中使用模式.我知道,一张桌子相当于一张Dao,我是对的吗?就像StudentDao,SubjectDao.
每个都在相关的表中Dao执行CRUD操作,但我的问题是,我将如何DAO为连接表创建一个?假设我有一个查询来加入学生和主题表,那我该如何创建一个DAO呢?
我应该把它放到StudentDao?或者SubjectDao?或者在这种情况下有一个很好的做法?
Sim*_*iak 13
DAO - Data Access Object是Object应该只与数据库通信.因此,如果您想要JOIN两个表,那么您必须参加DTO ObjectStudentDTO参考SubjectDTO.
public class StudentDTO {
private String name;
private String surname;
private String age;
private SubjectDTO subject;
// getters, setters
}
Run Code Online (Sandbox Code Playgroud)
所以,SubjectDTO
public class SubjectDTO {
private String name;
private int room;
// getters, setters
}
Run Code Online (Sandbox Code Playgroud)
而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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我建议你查看一些教程.
问候