"dtsc_register ON dtsc_conferenceRegisterAssign.registerId = dtsc_register.id "+
"WHERE dtsc_conferenceRegisterAssign.conferenceId = "+conferenceId+" ORDER BY dtsc_conferenceRegisterAssign.id");
Collection
while (rst.next()) {
Register register=new Register();
register.setId(rst.getInt("id"));
register.setName(rst.getString("name"));
register.setSex(rst.getInt("sex"));
register.setRace(rst.getString("race"));
register.setIdentificationId(rst.getString("identificationId"));
register.setDepartment(rst.getString("department"));
register.setPositionOrIdentity(rst.getString("positionOrIdentity"));
register.setMobilephone(rst.getString("mobilephone"));
register.setDeparture(rst.getString("departure"));
register.setArrivingTime(rst.getString("arrivingTime"));
register.setIp(rst.getString("ip"));
register.setRegisterTime(rst.getString("registerTime"));
register.setEducation(rst.getString("education"));
register.setAddress(rst.getString("address"));
register.setZipcode(rst.getString("zipcode"));
register.setSuozaibumen(rst.getString("suozaibumen"));
register.setTelephone(rst.getString("telephone"));
register.setIsFirst(rst.getInt("isFirst"));
registers.add(register);
}
con.close();
return registers;
}
通过INNER JOIN就可以通过一次数据库的查询达到目的。
结论:
对比前后两种代码,我们看到,对数据库的操作次数越少越好。如前面我们总共进行了<本次会议报名人数+1>次数据库查询,后着我们只进行了一次Inner Join查询操作。差距显而易见。所以在表之间靠外键进行联系时,如果你用原始的JDBC语句,请一次完成查询。
如果你使用的是HIbernate这样的ORM框架,那么恭喜你,你不用为构造复杂的SQL而操心,她内部的多层缓存机制和Lazy懒惰机制会使你最少的进行数据库查询(当然你需要了解更多的配置才行),大大提高效率。
摘自 figo的专栏