본문 바로가기

웹개발 풀스택 과정

(174)
77일차(2022.04.18) _ MySQL 페이징, 검색 1. Paging 처리 시 차이점 - rownum 대신 limit 사용 - limit 시작번호, 갯수 - where절에 쓰는 것이 아니라, order by절 뒤에 작성 -- 페이징 SELECT * FROM BOARD WHERE NUM > 0 ORDER BY NUM DESC LIMIT 1, 10; -- PK로 지정된 컬럼에 조건을 주어 찾으면 검색속도가 빨라진다고 함, 그래서 NUM > 0이라는 조건을 줌 Oracle에 비해 굉장히 간단한 쿼리문으로 페이징 구현 가능, 첫번째 데이터부터 10개의 데이터를 가져오게 됨 SELECT * FROM BOARD WHERE NUM > 0 ORDER BY NUM DESC LIMIT #{startRow}, #{perPage} @Data public class Pager ..
77일차(2022.04.18) _ MySQL과 OracleDB와의 차이점 1. 데이터 타입의 차이 지금까지 오라클에서는 테이블을 생성할 때 number, varchar2, date 타입을 사용했는데 MySQL에서는 int, varchar, date로 사용하면 될 것 같다. 만약 PK와 같이 시퀀스를 통해 표현해야 할 수의 범위가 크다면, bigint형을 사용하면 된다. 그리고 대용량 텍스트인 clob의 경우에는 text를 사용하면 된다. 참고로 Oracle의 varchar2는 4000바이트 까지 가능하지만, MySQL에서의 varchar는 65534바이트 까지 가능하다. date 타입의 경우는 년월일 까지 표시하고, datetime은 년월일시분초까지 표시해준다. 2. 기본적인 쿼리 차이점 - NOT NULL을 제외하고 컬럼 레벨 방식으로 제약조건을 넣지 못함 - 시퀀스를 따로..
76일차(2022.04.15) _ Lombok - DTO, VO의 setter, getter를 자동 생성 해주는 API - 다른 기능도 있음 1. 설치 1) https://www.projectlombok.org/download 에서 다운 2) jar파일 설치 (파일이 있는 디렉토리에서 java -jar 파일명) 3) specify location 클릭, IDE가 설치된 폴더로 이동해서 IDE 실행파일 선택 4) install/update로 설치 (IDE가 켜져 있다면 재시작 해야 함) 2. 프로젝트 라이브러리에 추가 1) 프로젝트 생성 시에 Lombok 추가하기 2) 프로젝트를 만든 후에 추가 시에는 수동으로 pom.xml에 추가 3. getter, setter 자동 생성 - DTO, VO 클래스에 @Data 어노테이션 작성 시 자동 생성됨 - 따로..
76일차(2022.04.15) _ Boot에서 MyBatis 설정 1. DB 연동 객체 생성 (DataSource) - properties 파일에 DB연결정보를 넣으면 객체를 생성해줌 2. DTO(VO) 생성 3. DAO(Mapper) 생성 - Class가 아니라 Interface로 생성 - DAO(Mapper) 선언부에 @Mapper 선언 @Mapper의 역할 - Legacy 에서는 Mapper(DAO) 를 사용시 @Repository 를 이용해 객체 생성하고 사용 - Boot 에서는 Mapper(DAO)가 Interface이기 때문에 @Repository만 단독 사용하면 객체 생성이 안됨 - @Mapper는 Interface를 구현 클래스로 만들어 객체를 생성해 주는 역활 - @Mapper만 선언해도 되고 @Repository를 같이 선언해도 무방 4. proper..
75일차(2022.04.14) _ 반응형 웹 - 미디어 쿼리, 부트스트랩 1. 미디어 쿼리 div { width: 50%; height: 100px; background-color: grey; } /* 기본으로 작성되는 css는 576px보다 작은 화면에 적용 */ /* 가로 길이가 576px보다 큰 화면에 적용 */ @media (min-width: 576px) { div { background-color: red; } } /* 가로 길이가 768px보다 큰 화면에 적용 */ @media (min-width: 768px) { div { background-color: blue; } } /* 가로 길이가 992px보다 큰 화면에 적용 */ @media (min-width: 992px) { div { background-color: yellow; } } /* 가로 길이가 120..
75일차(2022.04.14) _ Spring Boot 기본 1. Spring Legacy와 차이점 - XML 파일을 더 이상 사용하지 않음 - XML 대신 Java로 대부분을 사용 - 설정의 대부분은 properties 파일을 많이 사용 - JSP를 사용하지 않는 것을 권장함 - 라이브러리 관리가 좀 더 편해짐 설명1. 라이브러리 관리의 이점 Legacy는 프로젝트 생성 시에 pom.xml에서 사용할 라이브러리를 추가해야 했지만, Boot는 프로젝트 생성 시 라이브러리 추가가 가능하다. 그리고 추가된 라이브러리는 버젼관리가 필요하지 않다. 알아서 라이브러리의 버전을 최신으로 유지해주기 때문이다. 물론 버전을 명시해야 하는 라이브러리도 종종 있다. 2. 프로젝트 생성 1. File - new - Spring Starter Project 2. 프로젝트에서 사용할 정..
75일차(2022.04.14) _ 기본 설정 1. 환경설정 1. 인코딩 설정 - Window - Preferences - General - Workspace - 인코딩 UTF - 8로 변경 2. 기본 웹브라우저 설정 - Window - Preferences - General - Web Browser - External - 사용할 웹브라우저 선택 3. Properties 인코딩 설정 - Window - Preferences - General - Content Types - Text탭 확장 - Java Properties File 클릭 - Default encoding 값 UTF-8로 변경 2. WAS - Spring Boot에서 기본적으로 내장되어 있는 Server 사용
59일차(2022.03.23) _ File 수정기능 설계 (Ajax 이용) 공지사항 이름 수정 공지사항 내용 수정 ${detail.contents} 작성자 정보 : ${detail.writer} ${f.oriName} X 수정하기 DEL FileAdd 게시판의 경우에, 파일을 여러개를 등록할 수 있게 설계를 해놓았다. 즉, 게시판테이블과 파일테이블의 관계가 1:N 관계이다. 우선, 업데이트 처리를 위해서 기존에 사용자가 올렸던 파일의 이름을 input태그의 file 타입 내에 표시할려고 했더니, input 태그의 file에는 파일명은 파일명을 value값에 넣어준다고 해도 파일 이름이 뜨지 않는다. file 타입일 때는, 파일을 선택해서 올릴 경우에만 파일명이 표시가 된다. 그리고 애초에 파일을 업데이트 한다는 개념은, 여러개의 파일데이터의 PK, 즉 fileNum을 파라미터로..