본문 바로가기

전체 글40

[Spring] Lombok @Data 어노테이션 package tacos; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class Ingredient { private final String id; private final String name; private final Type type; public static enum Type { WRAP, PROTEIN, VEGGIES, CHEESE, SAUSE } } @Data 어노테이션을 지정하면 소스 코드에 누락된 final 속성들을 초기화하는 생성자는 물론이고, 속성들의 게터와 세터 등을 생성하라고 Lombok에 알려준다. 그리고 equals(), hashCode(), toSt.. 2023. 6. 28.
[MySQL] 페이징 - LIMIT, OFFSET 지난 프로젝트에서 게시판 페이징을 뒷단에서 구현하지 않고 앞단에서 구현했었습니다. 개발 시점과 테스트시에는 아무런 문제가 없었지만 유저가 유입되고 게시글이 많이 쌓이게 되면 성능에 문제가 발생할 것이 분명합니다.(사실 말도 안 되는 개발쇼를 했던 것이다...) 리팩토링을 위해 MySQL 페이징 처리 관련 학습한 것을 정리합니다. MySQL 페이징은 LIMIT과 OFFSET으로! LIMIT : 가져올 개수 OFFSET : 가져오는 시작점(기입된 숫자보다 +1된 행부터 가져옵니다.) SELECT * FROM post LIMIT 10 OFFSET 0; #(1번째부터 10개를 가져옵니다.) SELECT * FROM post LIMIT 5 OFFSET 2; #(3번째부터 5개를 가져옵니다.) OFFSET을 사용하.. 2023. 3. 30.
[ReactJS] 동시에 ajax 요청 여러개하기 Promise.all([ axios.get('/url1'), axios.get('/url2') ]) .then(()=>{ // 위 두 요청이 둘다 성공했을 때 작동 }) .catch(()=> { }) 2023. 3. 6.
[MySQL] GROUP BY와 ONLY_FULL_GROUP_BY MySQL로 쿼리를 짜던 중 의구심이 들었다. GROUP BY절에 언급되지 않은 컬럼은 SELECT에 기술할 수 없는데 왜 내 쿼리는 작동하는 거지??? SELECT * FROM meal_pass_serial mps INNER JOIN meal_pass mp ON mps.meal_pass_uuid = mp.uuid WHERE mps.user_uuid IS NULL GROUP BY mps.meal_pass_uuid; chatGPT에게 여쭤보았다. 'ONLY_FULL_GROUP_BY' 모드는 처음 들어보는데 바로 조회해 봤다. SELECT @@SQL_MODE ONLY_FULL_GROUP_BY 모드가 없는 걸 보니 활성화되지 않았던 것이다.... 바로 활성화시키고 표준에 맞게 쿼리 짜도록 해야겠다! 2023. 2. 17.
[MySQL] CASE를 알아보자! 주문내역을 관리하는 API를 만들었다. 주문상태 컬럼을 WAITING, RESERVED, CANCELED으로 관리하고 있고 그대로 뿌려준다. FE 개발자분께서 Response body에 추가적으로 WAITING일 때는 1을 나머지일 때는 0을 보내달라고 요청하셨다. 쿼리를 어떻게 수정할지 고민하다 CASE문을 알게됐고 적용할 수 있었다. SELECT *, (CASE WHEN reservation_status = 'WAITING' THEN 1 WHEN reservation_status = 'CANCELED' THEN 0 WHEN reservation_status = 'RESERVED' THEN 0 END) AS reservation_status_number, FROM reservation 2023. 2. 16.
[MySQL] JSON_ARRAYAGG로 JSON 데이터 출력하기 MySQL의 JSON_ARRAYAGG 함수는 SQL 쿼리에서 JSON 배열을 생성할 때 사용할 수 있습니다. 용례는 다음과 같습니다. SELECT JSON_ARRAYAGG(column_name) FROM table_name; 위 쿼리는 'table_name' 테이블에서 'column_name' 컬럼의 값을 JSON 배열로 묶어 리턴합니다. 예시) CREATE TABLE fruits ( name VARCHAR(20) ); INSERT INTO fruits (name) VALUES ('apple'), ('banana'), ('cherry'); SELECT JSON_ARRAYAGG(name) FROM fruits; // [ "apple", "banana", "cherry"] 내가 사용한 쿼리 SELECT ur.. 2023. 2. 14.