여러 개의 테이블의 데이터를 조회하는 법 조회하고 싶은 컬럼이 여러개의 테이블에 있을 경우 조인을 사용해줍니다. 이때 각 테이블에서 공통된 컬럼을 조건으로 넣습니다. 구매 목록 화면을 만들기 위해 SHOP_BUY(구매 정보), SHOP_BUY_DETAIL(구매 상세정보), SHOP_ITEM(상품 정보), ITEM_IMG(상품 이미지) 총 4개의 테이블의 컬럼을 SELECT하는 쿼리문을 mapper에 만들었습니다. 여기서 SHOP_BUY 테이블과 BuyVO가 매핑된 resultMap이기 때문에 나머지 3개의 테이블의 컬럼은 조회할 수 없습니다. 그래서 나머지 테이블의 데이터도 VO와 resultMap으로 연결해주어야 합니다! BuyVO에 buyDetailList 필드를 추가해주고 List이기때문에 resu..
MERGE INTO MERGE INTO target_table USING source_table ON (조건) WHEN MATCHED THEN UPDATE SET 변경사항 WHEN NOT MATCHED THEN INSERT (column1, column2, ...) VALUES (value1, value2, ...); MERGE INTO 사용할 테이블 USING 비교할 테이블 (없으면 DUAL) ON 비교 조건 WHEN MATCHED THEN 조건이 충족 시 해당 UPDATE문 실행 WHEN NOT MATCHED THEN 조건이 불충족 시 해당 INSERT문 실행 여기서 UPDATE문, INSERT문에는 테이블명은 생략합니다! UPDATE문의 WHERE절은 생략해도 되고 안 해도 됩니다. 해당 쿼리문을 ..
필드를 통한 의존성 주입 컨트롤러에서 서비스의 메소드를 사용하기 위해 서비스 클래스에는 @Service("서비스명")를 컨트롤러에는 @Resource(name="서비스명")으로 필드를 생성하여 의존성을 주입할 수 있습니다. 올드한 방식임!! 생성자를 통한 의존성 주입 스프링 부트에서 권장되는 방법으로 해당 클래스의 생성자를 통해 의존성을 주입할 수 있습니다. 생성자를 자동으로 만들어주는 어노테이션을 사용하여 코드를 간결하게 만들어줄 수 있습니다! @RequiredArgsConstructor 이 때, 필드는 final로 만들어주어야 합니다. (의존성 역전의 원칙을 지키기 위함임!)
@RequestParam 스프링 부트에서 @RequestParam은 HTTP 요청 파라미터를 컨트롤러 메서드의 매개변수로 바인딩하기 위해 사용되는 어노테이션입니다. @RequestParam(name = " ") HTML에서 name값과 전달 받는 컨트롤러의 매개변수를 동일시켜서 데이터를 전달받는데 @RequestParam의 name과 동일시켜주면 매개변수명을 다르게 해도 데이터 받을 수 있습니다. @RequestParam(required = true) : true면 해당 변수로 전달되는 데이터가 있어야함 컨트롤러 메소드 매개변수에 @RequestParam을 안 넣으면 기본 값이 @RequestParam(required = false) 로 해당 변수도 전달되는 데이터가 없어도 오류가 안나고 null로 뜸 ..