개인 공부/TIL

TIL #220520 #JSP #DB

kaleb 2022. 5. 20. 21:53
728x90

한 주가 모두 지났습니다! 

금요일수업은 그동안의 피로가 묵힌것 처럼 체력적으로 쉽지 않았던 것 같습니다.

내일 중요한 시험이 있어서 오늘은 간략하게 TIL을 진행하고 시험 후에 열심히 공부하도록 하겠습니다.

 

오전 JSP

오늘은 오전 JSP 오후 DB수업으로 진행되었습니다.

JSP의 경우 (저 포함)많은 학생들이 DAO DTO 패턴을 헷갈려해서 여러번 반복하면서 시간이 다 간 것 같습니다.

(사실 반복해도 모르겠음)

 

 

JDBC DAO DTO 패턴

헷갈리면 복습 복습

DAO(Data Access Object) :

데이터 접근 객체 CRUD(Create, Retrive, Update, Delete, Select) 를 전문적으로 담당하는 객체 입니다.

JDBC를 이용하여 데이터베이스에 접근하여 쿼리를 실행합니다.

 

DTO(Data Transfer Object) :

데이터 전송 객체 데이터베이스의 테이블에 해당하는 객체로 테이블의 컬럼들을 저장할 수있는 필드가 있고

Getter/Setter 메서드를 갖습니다.

 

클릭하면 test2.jsp로 이동하는 버튼 만들기 + 변수 idx의 값을 같이 넘기기

<button onclick="location.href='test.jsp?idx=<%=idx%>'">test2.jsp로 이동</button>

 

클래스 찾아가는 방법

ctrl 을 누른 상태로 클래스를 클릭하면 이동이 됩니다.

System.out.println()을 활용해서 수시로 에러가 어디서 났는지 확인하면서 합시다.

 

JDBC SELECT 구문 연습

public TestDTO selectInfo(int idx) throws Exception {
		
		//리턴할 데이터를 저장할 TestDTO 타입 변수를 선언
		
		TestDTO dto =null;
		
		
		System.out.println("selectInfo() 메서드 호출됨");
		//test3 테이블에서 idx값이 일치하는 레코드를 조회하여 바로 출력하기
		String driver = "com.mysql.cj.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/study_jsp2";
		String user = "root";
		String password = "1234";
		
		// 1단계. 드라이버 로드s
		Class.forName(driver);
		System.out.println("드라이버 로드 성공!");
		
		// 2단계. DB 연결
		Connection con = DriverManager.getConnection(url, user, password);
		System.out.println("DB 연결 성공!");
		
		//3단계
		String sql = "SELECT * FROM test3 WHERE idx=?";
		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setInt(1, idx);
		System.out.println("구문 작성완료");
		
		//4단계
		ResultSet rs = pstmt.executeQuery();
		while(rs.next()) {
			dto = new TestDTO();
			dto.setIdx(rs.getInt("idx"));
			dto.setName(rs.getString("name"));
		}
		rs.close();
		pstmt.close();
		con.close();
		
		return dto;

ResultSet를 받고나서 이를 출력하려면

커서를 옮겨주어야 합니다. → rs.next()!!!

 

rs.getInt를 사용할때에는 aruments 값이 column idx인지 label인지 체크 후 사용합니다.!

 

복습임에도 많이 헤메어서 강사님께서 Sequence diagram을 그리는 방법을 가르쳐 주셨습니다.

과정은 이렇습니다.

 

이해가 안될때는 다이어그램으로 차분히 그려보고 다시 진행하는 습관을 가지는것도 좋아보입니다.

참고 : 다이어그램 그리면서 연습해봅시다!

https://app.diagrams.net/

 

Flowchart Maker & Online Diagram Software

Flowchart Maker and Online Diagram Software diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPM

app.diagrams.net

 

오후 DB

 

예제 문제 풀기

 

지난시간 풀 복습!

 

자세한 내용은 저의 페이지! TIL #220519의 DB를 참고하세요!

 

https://meerkat127.tistory.com/10

 

TIL #220519

한 주가 정말 빠르게 가는것 같습니다. 시간이 빠르게 가는건 제가 열심히 살았다는 이유일까요? 😅 하하하하 원래는 10시쯤 애매하게 일어나서 새벽 3~4시쯤 자는 사람이었는데 반강제(?)로 7시

meerkat127.tistory.com

복습 후에는 연습문제를 풀어봅시다

 

ex) employees 테이블로부터 다음과 같이 출력하는 보고서를 작성하시오

컬럼 Alias : Dream Salaries 출력형식 : <employee last name> earns <salary> montly but wants <3 times salary>.

SQL> SELECT LPAD(last_name, 11, ' ') || ' earns ' || TO_CHAR(salary, '$99,999.00') 
			|| ' monthly but wants ' || TO_CHAR((salary *3), '$99,999.00') || 
			'.' AS "Dream Salaries"
  2  FROM employees;
/* 출력 값
Dream Salaries
--------------------------------------------------------------------------------
       King earns  $24,000.00 monthly but wants  $72,000.00.
    Kochhar earns  $17,000.00 monthly but wants  $51,000.00.
    De Haan earns  $17,000.00 monthly but wants  $51,000.00.
     Hunold earns   $9,000.00 monthly but wants  $27,000.00.
      Ernst earns   $6,000.00 monthly but wants  $18,000.00.
     Austin earns   $4,800.00 monthly but wants  $14,400.00.
  Pataballa earns   $4,800.00 monthly but wants  $14,400.00.
    Lorentz earns   $4,200.00 monthly but wants  $12,600.00.
  Greenberg earns  $12,008.00 monthly but wants  $36,024.00.
     Faviet earns   $9,000.00 monthly but wants  $27,000.00.
       Chen earns   $8,200.00 monthly but wants  $24,600.00.
*/

연결연산자 ‘ | |’ 와를 통해서 리터럴문자와 연결해서 작성 할 수 있습니다.

LPAD(적용할 값, 문자열의 길이, 채울 값);

 

연습문제 이후에는 

Oracle SQL Developer를 설치 및 세팅 해보았습니다.

신세계일까요.. 아주 편합니다.

 

코드 포메터(자동 줄바꿈) Ctrl + f7

구문실행 : Ctrl + enter

 

오늘은 여기까지만 진행하도록하겠습니다.

내일 시험 잘치고 다시 TIL로 돌아오겠습니다. 파이팅!

반응형

'개인 공부 > TIL' 카테고리의 다른 글

TIL #220522 #JSP  (0) 2022.05.23
TIL #220521 #JSP  (6) 2022.05.22
TIL #220519 #DB #WEB  (0) 2022.05.19
TIL #220518 #JAVA #NET  (0) 2022.05.18
TIL #220517 #JSP #JAVA  (0) 2022.05.17