본문 바로가기
학원수업/1월

01/03 자바 복습 - 디비연동(List, Map)

by 코딩마스터^^ 2023. 1. 3.

List<DeptVO>& List<Map>

 

1. 첫번째 제네릭 타입은 DeptVO이다

private int deptno;

private String dname

private String loc;

 

2. 두번째 제네릭 타입은 Map이다.- Object -형전환-캐스팅연산자

연산을 해야 하니까....+,-,*,/,%

CastingException 만날 수 있다.

 

  : 

 

어디가 어떻게 다르지?

ORM솔루션-MyBatis(반자동)와의 연계 --->Hibernate(DML문 자체가 없음) 그래서 독이 될수도...ㅎ

DV와 연동을 자동으로 해준다...

 

오라클에서 변수는 뭐지?

 

표 두개 불러올때

데이터 정규화

https://code-lab1.tistory.com/48

 

[DB] 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF

정규화(Normalization)란? 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계

code-lab1.tistory.com

제1정규화

하나만 들어있어야한다.

 

 

오라클과 자바 연결

오라클에서의 sql문을 사용할때 StringBuilder를 사용

append해준다

 

리스트로 디비연동하기

package dev_java.basic;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import dev_java.util.DBConnectionMgr;

public class ListDeptVO {
  DBConnectionMgr dbMgr= new DBConnectionMgr();
  Connection con =null;
  PreparedStatement pstmt=null;
  ResultSet rs =null;//오라클 테이블에서 제공되는 커서를 조작하는 함수제공


    public List<DeptVO> getEmpList(){
      List<DeptVO> list =null;
      StringBuilder sql= new StringBuilder();
      sql.append("SELECT                      ");
      sql.append("        empno, ename, dname");
      sql.append("  FROM emp, dept            ");
      sql.append("  WHERE emp.deptno = dept.deptno");
      try {
        con=dbMgr.getConnection();
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
        list= new ArrayList<>();//list.size()=0
        DeptVO dVO= null;
        while(rs.next()){ //테이블에 한 줄을 가져온다 있으면 돌아라
          dVO =new DeptVO();//디폴트 생성자를 호출함 0 null
          // dVO =new DeptVO(0,null,rs.getString("dname"));//쌤은 파라미터있는걸로 받아오심
          // System.out.println(rs.getInt("empno")+","+rs.getString("ename")+","+rs.getString("dname"));
          dVO.setDeptno(Integer.parseInt(rs.getString("empno")));//getString으로 쿼리문의 실행 결과를받아온다. 
          //그리고 내가 넣어준다. set으로 DeptVO클래스에 
          dVO.setDname(rs.getString("dname"));
          dVO.setLoc(rs.getString("ename"));
          list.add(dVO);//0부터 차례로 들어간다.
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
        return list;
    }
    public static void main(String[] args) {
    
      ListDeptVO listDeptVO= new ListDeptVO();
      List<DeptVO> list =null;
        list=listDeptVO.getEmpList();
      System.out.println("list : "+list);
      for(DeptVO rdVO: list){
        System.out.println(rdVO);//while문을 타지않으면 null인상태
        System.out.println(rdVO.getDeptno()+","+rdVO.getDname()+","+rdVO.getLoc());
      }
  
    }

}

 

맵으로 디비연동하기

package dev_java.basic;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import dev_java.util.DBConnectionMgr;

public class ListMap {
  DBConnectionMgr dbMgr= new DBConnectionMgr();
  Connection con =null;
  PreparedStatement pstmt=null;
  ResultSet rs =null;//오라클 테이블에서 제공되는 커서를 조작하는 함수제공


    public List<Map<String,Object>> getEmpList(){
      List<Map<String,Object>> list =null;
      StringBuilder sql= new StringBuilder();
      sql.append("SELECT                      ");
      sql.append("        empno, ename, dname");
      sql.append("  FROM emp, dept            ");
      sql.append("  WHERE emp.deptno = dept.deptno");
      try {
        con=dbMgr.getConnection();
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
        list= new ArrayList<>();//list.size()=0
        Map<String, Object> rmap= null;
        while(rs.next()){ //테이블에 한 줄을 가져온다 있으면 돌아라
          rmap =new HashMap<>();
          rmap.put("번호",rs.getInt("empno"));//키는 내가 정해주는거고 뒤에오는게 오라클에서 받은것
          rmap.put("ename",rs.getString("ename"));
          rmap.put("dname",rs.getString("dname"));
          list.add(rmap);//0부터 차례로 들어간다.
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
        return list;
    }
    public static void main(String[] args) {
      ListMap rm =new ListMap();
      List<Map<String, Object>> list=null;
      list =rm.getEmpList();
     
      System.out.println("list : "+list);

      for(Map<String,Object> rmap:list){
        System.out.println(rmap.get("empno")+","+rmap.get("dname")+","+rmap.get("ename"));
      }
    }

댓글