我目前正在学习在项目中使用Dao模式的方法。我知道,一个表等于一个Dao,对吗?就像StudentDaoSubjectDao

每个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/

10-12 16:49