데이터베이스 최적화 조회

원래 세 장의 표 와 관련 된 조 회 를 하려 고 했 는데 지금 은 두 장의 표를 먼저 찾 은 다음 에 세 번 째 표를 꺼 내 Map 으로 전환 한 다음 에 프로그램 에서 현재 DAO 에서 포장 하고 각각 두 개의 List 를 제거 하 는 것 으로 최적화 되 었 다.
4. 567913. 그리고 Manager 에서 조립 합 니 다.
public List getAssistanceStudentList(VarifySearch search) {

  String sql = "";

  sql="select sa,stu from StudentAssistance as sa,Student as stu where sa.stuid = stu.id"

   +" and sa.unitguid = '"+search.getSchoolid()

   +"' and sa.xn='"+search.getAcadyear()

   +"' and sa.xq='"+search.getTerm()

      +"' and stu.nj like '"+search.getSection()+"'";

  List result = getHibernateTemplate().find(sql);

  //System.out.println("!!!!!!!!!!!!!!!getAssistanceStudentList.length:::"+result.size());

  if(result == null){

   result = new ArrayList();

  }

  return result;

 }

 

 public List getStudentClassinfo(VarifySearch search) {

  String sql = "";

  sql="select cls from ClassInfo as cls where cls.xn='"+search.getAcadyear()

   +"' and cls.xq='"+search.getTerm()

   +"' and cls.unitguid='"+search.getSchoolid()+"'";

  List result = getHibernateTemplate().find(sql); 

  System.out.println("!!!!!!!!!!!!!!!getAssistanceStudentList.length:::"+result.size());

  if(result == null){

   result = new ArrayList();

  }

  return result;

 }

 

public List getStudentAssistanceInfo(VarifySearch search) {

  //        (StudentAssistance,Student)  

  List assistance = studentAssistanceDao.getAssistanceStudentList(search);

  //         (ClassInfo)

  List classinfo = studentAssistanceDao.getStudentClassinfo(search);

  //           ,          dto list

  List all=mergeAssistanceClass(assistance,classinfo);

  return  all;

 }

 

private List mergeAssistanceClass(List assistance, List classinfo) {

  List resultList = new ArrayList();

  if (assistance == null || assistance.isEmpty()) {

   return resultList;

  }

  int len = assistance.size();

  // List   Map

  Map classMap = convertToClassMap(classinfo);

  for (int i = 0; i < len; i++) {

   //     , sql        

   Object[] objects = (Object[]) assistance.get(i);

   if(objects == null || objects.length == 0 ){

    continue;

   }

   StudentAssistance sa=(StudentAssistance) objects[0];

   Student stu=(Student) objects[1];

   ClassInfo ci=(ClassInfo) classMap.get(stu.getBh());

   //       

   StudentAssistanceDto dto=new StudentAssistanceDto();

   //  

   ..........

   ...  .....

   ..........

   

   // dto   List

   resultList.add(dto);

  }

  return resultList;

 } 

 

 /**

  *      list     Map, Key           

  * 

  * @param classinfo

  * @return

  */

 private Map convertToClassMap(List classinfo) {

  Map classMap = new HashMap();

  if (classinfo == null || classinfo.isEmpty()) {

   return classMap;

  }

  for (int i = 0; i < classinfo.size(); i++) {

   ClassInfo cls = (ClassInfo) classinfo.get(i);

   classMap.put(cls.getBh(),cls);

  }

  return classMap;

 }

 //       null,    ,      

 private String isNull(Double d){

  //           

  DecimalFormat df = new DecimalFormat("######0.00"); 

  String defult="0.00";

  if(null==d || d.equals("")){

   return defult;

  }else{

   return String.valueOf(df.format(d.doubleValue()));

  }

 }

좋은 웹페이지 즐겨찾기