MariaDB JOIN 쿼리 /JPA JOIN Mapping 해보기

성 우·2023년 2월 25일
0

단순 테이블간 JOIN 하기

메인 카테고리와 서브카테고리를 조인 한다 조건은 main_category_id와 sub_category_id 같은것 끼리

SELECT * FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id;

테이블 JOIN 시 원하는 컬럼만 보기

메인 카테고리와 서브카테고리를 조인 한다 조건은 main_category_id와 sub_category_id 같은것 끼리

SELECT main_category.main_category_id,main_category.name,sub_category.sub_category_id,sub_category.name FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id

테이블 JOIN 후 컬럼이름을 바꿔서 출력

컬럼 이름 오른쪽에서 AS {컬럼이름} 을 통해 변경해서 출력한다.

SELECT main_category.main_category_id,main_category.name AS mainCategoryName ,sub_category.sub_category_id,sub_category.name As subCategoryName FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id

JPA에서 테이블끼리 관계 지정

MainCategory 와 SubCategory는 OneToMany 1:N 관계의 테이블이다.

    @ManyToOne
    @JoinColumn(name = "main_category_ID")
    private MainCategory mainCategory;

SubCategoryTable의 main_category_ID는 MainCategoryTable의 ID(pk)와 관계되어있으므로
위와 같이 어노테이션을 지정해준다.

    @Override
    public List<SubCategoryResponseDTO> getAllSubCategory(long mainCategoryId) {
        List<SubCategoryResponseDTO> result = new ArrayList<>();

        List<SubCategory> categories = subCategoryRepository.findByMainCategoryId(mainCategoryId);

        for (SubCategory v : categories) {
            SubCategoryResponseDTO dto = new SubCategoryResponseDTO();
            result.add(dto.fromEntity(v));
        }
        if (result.isEmpty()) {
            throw new IllegalStateException("Empty");
        } else {
            return result;
        }
    }

path 로 받은 mainCategoryId를 찾아서 반환을 하면

profile
풀스택 개발자가 되고싶은 개발자

0개의 댓글