728x90
반응형

📖 Map

	public static void main(String[] args) {
		Map<String, Object>map = new HashMap<>();
		map.put("name", "러아니푸");
		map.put("pet","순돌이");
		map.put("age",99);
		
		System.out.println(map.get("name")); // 키로 값을 출력
		System.out.println("");
		
		for(String k :map.keySet()) { // 키만 출력
			System.out.println(k);
		}
		System.out.println("");
		
		for(Object v : map.values()) { // 값만 출력
			System.out.println(v);
		}
	}

 

  • 키와 값으로 구성되어있다.
  • 여러 타입의 값을 저장하기에 좋다.
  • 키값은 중복이 허용되지 않지만, 값은 상관없다.
  • for문의 사용이 어렵고, foreach문을 통해 키와 값을 출력할 수 있다.

 

 

 

📖 table join 데이터 받아오는 방법

Emp.java : 사원 정보를 담는 Vo

public class Emp {
	private int empNo;
	private String empName;
	private int deptNo;
    
    // setter/getter, toStrint() 넣어야 합니다
}

 

 

Dept.java : 부서 정보를 담는 Vo

public class Dept {
	private int deptNo;
	private String deptName;
	private String deptLoc;
	
	// setter/getter, toStrint() 넣어야 합니다
}

 

   

    => 사원과 부서 테이블을 join했을 경우의 값을 받아온다.

 

 

 

 

 

😀 Vo 사용으로 처리

 

EmpAndDept.java : Emp와 Dept를 넣은 Vo

public class EmpAndDept {
	private Emp emp;
	private Dept dept;
    // setter/getter, toStrint() 넣어야 합니다
}

 

 

 

 

main.java

   public EmpAndDept selectEmpVoOne() {
      // 사원 정보
      Emp emp = new Emp();
      emp.setEmpNo(1);
      emp.setEmpName("러아니푸");
      emp.setDeptNo(100);
      
      // 부서 정보
      Dept dept = new Dept();
      dept.setDeptNo(100);
      dept.setDeptName("티스토리");
      dept.setDeptLoc("카카오");
      
      // 사원과 부서
      EmpAndDept end = new EmpAndDept();
      end.setEmp(emp);
      end.setDept(dept);
      
      return end;
   }
   
   public static void main(String[] args) {
   
      EmpDao empDao = new EmpDao();   
      EmpAndDept end = empDao.selectEmpVoOne();
      System.out.println(end);
   }

 

  *실제로는 selectEmpVoOne()은 EmpDao에 넣고 사용합니다*

 

  • 새로운 Vo에 join되는 테이블의 객체를 넣어 사용합니다.
  • 이 방식은 새로운 형식의 join을 할 때 마다, 그에 맞는 Vo를 만들어 줘야 하는 방식입니다.
  • 자주 join되는 테이블이면 몰라도 한 두번 사용하는 join을 위해 만드는 것은 비효율적입니다.

 

 

 

😀 Map 사용으로 처리

 

main.java

   public Map<String, Object> selectEmpMapOne() {
      Map<String, Object> map = new HashMap<>();
      Emp emp = new Emp();
      emp.setEmpNo(1);
      emp.setEmpName("러아니푸");
      emp.setDeptNo(100);
      
      Dept dept = new Dept();
      dept.setDeptNo(100);
      dept.setDeptName("티스토리");
      dept.setDeptLoc("카카오");
      
      map.put("emp", emp);
      map.put("dept", dept);
      
      return map;
   }
   
   public static void main(String[] args) {
   
      EmpDao empDao = new EmpDao();
      Map<String, Object> map = empDao.selectEmpMapOne();
      Emp emp = (Emp)map.get("emp");
      Dept dept = (Dept)map.get("dept");
      System.out.println(emp);
      System.out.println(dept);
   }

 

*실제로는 selectEmpVoOne()은 EmpDao에 넣고 사용합니다*

 

  • Emp와 Dept 각각을 Map에 넣어 사용합니다.
  • 새로운 Vo를 만들지 않아 편리하지만 받아서 사용할때는 형변환을 해야합니다.
  • 값을 받아올 필드의 개수가 적다면 굳이 Emp, Dept의 객체를 넘기지않고, 키값에 맞춰 값만 넘겨도 좋습니다.

 

728x90
반응형

+ Recent posts