9. 데이터 삽입
=> 기본키 생성 방식
- 기본키 값을 직접 입력하도록 : ID
- 기본키의 값을 자동으로 설정하도록 하는 경우 : 일련번호
=> 직접 입력하도록 하는 경우 중복 검사 수행
=> 자동으로 설정하는 경우 오라클의 시퀀스나 MySQL의 Auto_Increment를 이용, 가장 큰 번호에 +1하는 방법등
1) 기본키를 직접 입력받는 경우 : 입력받을 때 중복 검사 수행
=> getPlayer()를 이용하여 중복 검사 가능
- num1개를 받아서 1개의 데이터를 찾아오는 메소드
- 데이터가 리턴되면 존재, 리턴되지 않으면 존재하지 않는 num
=> DAO 클래스에
insert into player(playerID, playerName, playerLevel, playerDemage, playerCripercent, playerEXP, playerDate)
values(?,?,?,?,?,?,?)
=> MySQL의 한글 문제
- 이전에는 OpenSource를 유럽에서 많이 진행
- Open Source들의 인코딩 방식이 ISO-Latin1(ISO-8859-1)로 설정된 경우가 많음(한글 X)
- 접속시 utf-8로 접속 할 수 있도록 연결 url을 수정
- 연결 url뒤에 ?useUnicode=true&characterEncoding=utf8을 추가
2) 기본키를 자동으로 입력
=> Oracle의 Sequence나 MySQL의 Auto_Increment를 사용
=> 테이블에서 직접 가장 큰 번호를 찾아서 +1을 하는 방식
- pstmt.setString(1, this.bigID()+1);
=> DAO 클래스에 가장 큰 번호를 가져오는 메소드를 작성 - private로 생성
- insertPlayer에서 호출하여 사용
=> 하나의 메소드에 여러개의 SQL수행시 작업순서에 주의
- 연결 -> 작업 -> 해제 -> 연결 -> 작업 -> 해제의 순이 지켜져야 함
=> Main 클래스의 데이터 삽입 부분을 수정
- 자동으로 대입되므로 ID를 입력받을 필요 없음
10. 삭제 작업
=> 삭제의 경우 대부분 기본키만 받아서 수행하는 경우가 많음
=> 회원제 사이트의 경우 비밀번호를 먼저 입력 받아서 데이터를 수정이나 삭제해도 되는 유저인지 판별후 수행
=> 삭제, 수정은 데이터가 맞는지 재확인하는 절차를 거침
=> 삽입은 이런 절차를 거치지 않지만 입력 내용이 보이지 않는 비밀번호의 경우만 이런 절차를 거침
=> 수정의 경우 데이터를 찾아와서 기존 내용이 무엇인지 보여주고 수정하도록 해주어야 함
=> 삭제하는 SQL : delete from player where playerID = ?
11. 수정하기
=> 수정하는 SQL : update 테이블명 set 컬럼명 = 값(계산식), 컬럼명 = 값... where 기본키 = ?;
12. 부분일치 검색
=> 부분일치는 like와 wildcard 문자 이용
- % : 글자수와 상관없음
- _ : 아무글자나 1글자와 매칭
ex) playerName이 호로 시작 - PlayerName like '호%'
playerName에 호가 포함 - PlayerName like '%호%'
playerName이 호로 끝나는 두글자 - PlayerName like '_호'
=> 부분일치하는 데이터를 찾으면 0개 이상으로 봐야 함(데이터베이스 조회시는 0 or 1 / 0개이상이냐로 구분)
13. Paging 구현
=> 조회한 데이터가 많을 때 페이지 단위로 나누어서 출력(전체데이터 갯수와 페이지당 출력 갯수를 알면 계산가능)
=> 페이지 갯수 구하기
(int)((double)전체 데이터 갯수 / 페이지당 출력 갯수 + (double)(페이지당 출력갯수-1)/페이지당 출력갯수)
ex) 페이지당 출력 갯수 : 10
전체 데이터 갯수 : 100개 - 10page : (int)((double)100/10 + (9.0)/10)
전체 데이터 갯수 : 101개 - 11page : (int)((double)101/10 + (9.0)/10)
=> 나누었을 때 소수가 있으면 자리올림을 해야 함
2) 페이지 번호와 페이지당 데이터 갯수를 매개변수로 받아 페이지 번호에 해당하는 데이터를 조회하는 메소드 구현
=> MySQL에서 원하는 위치의 원하는 갯수만큼 데이터를 가져오는 방법은 limit
- select 구문 완성 후 맨 뒤에 limit 시작번호 데이터갯수를 추가
ex)
select * from player limit 1,2;
4) Main의 case 수정
=> 전통적인 PC용 웹 브라우저에서 조회하는 형태는 페이지 번호를 하단에 출력하여 번호 클릭시 해당 데이터 조회
=> Mobile에서는 페이지 번호를 정확하게 터치하는 것이 어려움
- 다음에 조회할 데이터는 특별한 경우가 아니라면 바로 다음 페이지의 데이터
- 최근에는 특정 이벤트시 다음페이지의 데이터를 출력하는 형식을 주로 사용
'수업 정리' 카테고리의 다른 글
31일차 수업 정리(MongoDB- Connect) (0) | 2020.05.21 |
---|---|
30일차 수업정리 (0) | 2020.05.20 |
28일차 수업 정리(MySQL) (0) | 2020.05.18 |
27일차 수업 정리(MySQL) (0) | 2020.05.15 |
26일차 수업 정리 (0) | 2020.05.14 |