개인 프로젝트/블로그
카테고리 이름 리스트 적용기(벡엔드)
공주맛밤
2022. 7. 9. 11:28
<추가한 카테고리 모델>
public class CategoryNameList {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long largeCategory_id;
private String categoryName;
@Enumerated(EnumType.STRING)
private CategoryType categoryType;
}
public enum CategoryType {
LARGE, SMALL
}
<repository>
public interface CategoryNameRepository extends JpaRepository<CategoryNameList, Integer> {
}
<service>
@Transactional
public LargeCategory largeCategorySave (LargeCategory largeCategory) {
LargeCategory largeCategoryEntity= largeCategoryRepository.save(largeCategory);
CategoryNameList categoryNameList = CategoryNameList.builder() //largecategory를 저장하면서 categoryNameList에 값을 저장함
.largeCategory_id(largeCategoryEntity.getId())
.categoryName(largeCategoryEntity.getLargeCategoryName())
.categoryType(CategoryType.LARGE)
.build();
categoryNameRepository.save(categoryNameList);
return largeCategoryEntity;
}
@Transactional //subCategory 저장
public SubCategory subCategorySave (SubCategorySaveRequestDto subCategorySaveRequestDto) {
LargeCategory largeCategory = largeCategoryRepository.findById(subCategorySaveRequestDto.getLargeCategory_id())
.orElseThrow(()-> new IllegalArgumentException("없는 대분류 카테고리 입니다."));
CategoryNameList categoryNameList = CategoryNameList.builder() //subCategory를 저장하면서 categoryNameList에 값을 저장함
.largeCategory_id(largeCategory.getId()) //해당 largecategory_id가 들어가야함
.categoryName(subCategorySaveRequestDto.getSubCategoryName())
.categoryType(CategoryType.SMALL)
.build();
categoryNameRepository.save(categoryNameList);
SubCategory subCategory = SubCategory.builder()
.largeCategory(largeCategory)
.subCategoryName(subCategorySaveRequestDto.getSubCategoryName())
.build();
return subCategoryRepository.save(subCategory);
}
@Transactional //categoryNameList 가져오기
public List<CategoryNameList> categoryNameList() {
return categoryNameRepository.findAll();
}
<controller>
@GetMapping("/categoryNameList")
public ResponseDto<?> categoryNameList () {
return new ResponseDto<> (HttpStatus.OK.value(), categoryService.categoryNameList());
}


728x90
반응형