inblog logo
|
Coding's note
    P)About Me

    카테고리별 게시글 표현

    이소연's avatar
    이소연
    Aug 05, 2024
    카테고리별 게시글 표현
    Contents
    카테고리 더미 생성쿼리생성commservice무조건 테스트!!만난 오류들06.28 현재상황
     
     
    카테고리별로 게시판이 나뉘어야 한다.
    notion image
     
    일반고민을 누르면 일반고민 사연만 나오게
    취업/진로 버튼을 누리면, 취업/진로버튼만 나오게끔.
     

    카테고리 더미 생성

    GENERAL_CONCERNS("일반고민") 12, CAREER_JOBS("취업/진로") 2, WORK_LIFE("직장") 3, RELATIONSHIPS("연애")1, SOCIAL_INTERACTIONS("대인관계")2, ADDICTION_OBSESSION("중독/집착"), FINANCE_BUSINESS("금전/사업");
    GENERAL_CONCERNS("일반고민") 12, CAREER_JOBS("취업/진로") 8, WORK_LIFE("직장") 7, RELATIONSHIPS("연애")9, SOCIAL_INTERACTIONS("대인관계"),8 ADDICTION_OBSESSION("중독/집착"),10 FINANCE_BUSINESS("금전/사업"); 10
    -- comm_tb INSERT INTO comm_tb (user_id, content, title, category, created_at) VALUES (1, '집에 가고 싶어서 고민 적습니다', '집에 가고 싶어요', 'GENERAL_CONCERNS', NOW()), (1, '회사에서 스트레스 받아요', '회사 고민', 'WORK_LIFE', NOW()), (1, '취업/진로 내용1', '취업/진로 제목1', 'CAREER_JOBS', NOW()), (1, '취업/진로 내용2', '취업/진로 제목2', 'CAREER_JOBS', NOW()), (1, '취업/진로 내용3', '취업/진로 제목3', 'CAREER_JOBS', NOW()), (1, '취업/진로 내용4', '취업/진로 제목4', 'CAREER_JOBS', NOW()), (1, '취업/진로 내용5', '취업/진로 제목5', 'CAREER_JOBS', NOW()), (1, '취업/진로 내용6', '취업/진로 제목6', 'CAREER_JOBS', NOW()), (1, '금전/사업내용8', '금전/사업제목8', 'FINANCE_BUSINESS', NOW()), (2, '저녁 메뉴를 못 정하겠어요. 추천받고 싶습니다', '배고파요', 'GENERAL_CONCERNS', NOW()), (2, '취업/진로 내용7', '취업/진로 제목7', 'CAREER_JOBS', NOW()), (2, '취업/진로 내용8', '취업/진로 제목8', 'CAREER_JOBS', NOW()), (2, '취업/진로 내용9', '취업/진로 제목9', 'CAREER_JOBS', NOW()), (2, '취업/진로 내용10','취업/진로 제목10', 'CAREER_JOBS', NOW()), (2, '직장내용1', '직장제목1', 'WORK_LIFE', NOW()), (2, '직장내용2', '직장제목2', 'WORK_LIFE', NOW()), (2, '다이어트 중인데 뭐 먹죠?', '다이어트 고민', 'GENERAL_CONCERNS', NOW()), (2, '금전/사업내용9', '금전/사업제목9', 'FINANCE_BUSINESS', NOW()), (3, '금전/사업내용10', '금전/사업제목10', 'FINANCE_BUSINESS', NOW()), (3, '수업시간에 잠이 오면 어떻게 해야 할까요?', '매일매일 졸아요', 'GENERAL_CONCERNS', NOW()), (3, '시험 공부가 너무 힘들어요', '시험이 다가오는 것이 무서워요', 'GENERAL_CONCERNS', NOW()), (3, '직장내용3', '직장제목3', 'WORK_LIFE', NOW()), (3, '직장내용4', '직장제목4', 'WORK_LIFE', NOW()), (3, '직장내용5', '직장제목5', 'WORK_LIFE', NOW()), (3, '직장내용6', '직장제목6', 'WORK_LIFE', NOW()), (3, '직장내용7', '직장제목7', 'WORK_LIFE', NOW()), (3, '직장내용8', '직장제목8', 'WORK_LIFE', NOW()), (3, '직장내용9', '직장제목9', 'WORK_LIFE', NOW()), (4, '친구와 싸웠어요', '친구 고민', 'SOCIAL_INTERACTIONS', NOW()), (4, '여행 가고 싶은데 어디가 좋을까요?', '여행 고민', 'GENERAL_CONCERNS', NOW()), (4, '직장내용10', '직장제목10', 'WORK_LIFE', NOW()), (4, '직장내용11', '직장제목11', 'WORK_LIFE', NOW()), (4, '직장내용12', '직장제목12', 'WORK_LIFE', NOW()), (4, '연애내용1', '연애제목1', 'RELATIONSHIPS', NOW()), (4, '연애내용2', '연애제목2','RELATIONSHIPS', NOW()), (4, '연애내용3', '연애제목3', 'RELATIONSHIPS', NOW()), (5, '취미를 찾고 싶어요', '취미 고민', 'GENERAL_CONCERNS', NOW()), (5, '연애내용4', '연애제목4', 'RELATIONSHIPS', NOW()), (5, '연애내용5', '연애제목5','RELATIONSHIPS', NOW()), (5, '연애내용6', '연애제목6', 'RELATIONSHIPS', NOW()), (5, '연애내용7', '연애제목7', 'RELATIONSHIPS', NOW()), (5, '연애내용8', '연애제목8','RELATIONSHIPS', NOW()), (5, '연애내용9', '연애제목9', 'RELATIONSHIPS', NOW()), (5, '운동을 시작해보려고 하는데...', '나가기 싫어요', 'GENERAL_CONCERNS', NOW()), (6, '혼자 밥 먹기 너무 싫어요', '혼밥 고민', 'SOCIAL_INTERACTIONS', NOW()), (6, '영화 추천 좀 해주세요', '영화 고민', 'GENERAL_CONCERNS', NOW()), (6, '연애내용10', '연애제목10', 'RELATIONSHIPS', NOW()), (6, '연애내용11', '연애제목11','RELATIONSHIPS', NOW()), (6, '연애내용12', '연애제목12', 'RELATIONSHIPS', NOW()), (6, '대인관계내용1', '대인관계제목1', 'SOCIAL_INTERACTIONS', NOW()), (6, '대인관계내용2', '대인관계제목2', 'SOCIAL_INTERACTIONS', NOW()), (6, '대인관계내용3', '대인관계제목3', 'SOCIAL_INTERACTIONS', NOW()), (7, '새로운 프로젝트가 너무 어려워요', '프로젝트 고민', 'WORK_LIFE', NOW()), (7, '팀원과의 갈등이 있어요', '팀원 고민', 'WORK_LIFE', NOW()), (7, '대인관계내용4', '대인관계제목4', 'SOCIAL_INTERACTIONS', NOW()), (7, '대인관계내용5', '대인관계제목5', 'SOCIAL_INTERACTIONS', NOW()), (7, '대인관계내용6', '대인관계제목6', 'SOCIAL_INTERACTIONS', NOW()), (7, '대인관계내용7', '대인관계제목7', 'SOCIAL_INTERACTIONS', NOW()), (7, '대인관계내용8', '대인관계제목8', 'SOCIAL_INTERACTIONS', NOW()), (7, '대인관계내용9', '대인관계제목9', 'SOCIAL_INTERACTIONS', NOW()), (8, '자기계발을 어떻게 해야 할까요?', '자기계발 고민', 'CAREER_JOBS', NOW()), (8, '취업 준비가 막막해요', '취업ㅠㅠ', 'CAREER_JOBS', NOW()), (8, '대인관계내용10', '대인관계제목10', 'SOCIAL_INTERACTIONS', NOW()), (8, '대인관계내용11', '대인관계제목11', 'ADDICTION_OBSESSION', NOW()), (8, '대인관계내용12', '대인관계제목12', 'ADDICTION_OBSESSION', NOW()), (8, '중독/집착내용1', '중독/집착제목1', 'ADDICTION_OBSESSION', NOW()), (8, '중독/집착내용2', '중독/집착제목2', 'ADDICTION_OBSESSION', NOW()), (8, '중독/집착내용3', '중독/집착제목3', 'ADDICTION_OBSESSION', NOW()), (9, '연애가 너무 어려워요', '연애.................. 어려움', 'RELATIONSHIPS', NOW()), (9, '혼자서도 잘 할 수 있을까요?', '혼자 고민', 'GENERAL_CONCERNS', NOW()), (9, '중독/집착내용4', '중독/집착제목4', 'ADDICTION_OBSESSION', NOW()), (9, '중독/집착내용5', '중독/집착제목5', 'ADDICTION_OBSESSION', NOW()), (9, '중독/집착내용6', '중독/집착제목6', 'ADDICTION_OBSESSION', NOW()), (9, '중독/집착내용7', '중독/집착제목7', 'ADDICTION_OBSESSION', NOW()), (9, '중독/집착내용8', '중독/집착제목8', 'ADDICTION_OBSESSION', NOW()), (9, '중독/집착내용9', '중독/집착제목9', 'ADDICTION_OBSESSION', NOW()), (10, '집에서 취미 생활 하기 좋은 게 뭐가 있을까요?', '취미 생활', 'GENERAL_CONCERNS', NOW()), (10, '중독/집착내용10', '중독/집착제목10', 'ADDICTION_OBSESSION', NOW()), (10, '금전/사업내용1', '금전/사업제목1', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용2', '금전/사업제목2', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용3', '금전/사업제목3', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용4', '금전/사업제목4', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용5', '금전/사업제목5', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용6', '금전/사업제목6', 'FINANCE_BUSINESS', NOW()), (10, '금전/사업내용7', '금전/사업제목7', 'FINANCE_BUSINESS', NOW()), (10, '심리학 책 추천 좀 해주세요', '마음을 책으로 배울 수 있을까요?', 'GENERAL_CONCERNS', NOW());
     

    쿼리생성

    @Query("SELECT c FROM Comm c LEFT JOIN FETCH c.replies WHERE c.category = :category") List<Comm> findByCategoryWithReplies(@Param("category") CommCategory category);
     

    commservice

    //카테고리별 게시글과 관련된 댓글을 함께 조회하는 쿼리 public List<Comm> getCommsByCategoryV2(CommCategory category) { return commRepository.findByCategoryWithReplies(category); }
     
     
     

    무조건 테스트!!

    @Test void getCommsByCategoryV2Test() { List<Comm> findByCategoryWithReplies = commRepository.findByCategoryWithReplies(FINANCE_BUSINESS); findByCategoryWithReplies.forEach(comm -> System.out.println("comm = " + comm)); }
    게시글이 잘 나옴
     

    만난 오류들

    notion image
    ⇒ 주소 매핑 중복
     
    💡
    카테고리 주소는 어디에 매핑해야 하나?
    ⇒ comm 게시물에 하면, 매개변수가 달라서 함께 넣지 못한다.
    ⇒ 기존 코드를 유지한 채 comm에 넣으려고 하면,
    ⇒ 쿼리 파라미터 이름 인식x
    ⇒@RequestParam 애노테이션에 명시적으로 이름을 지정 ⇒컴파일러가 매개변수 이름 정보를 사용할 수 있도록 설정하지 않았기 때문에 발생하는 문제
    ⇒—다시 해보자
    ⇒mustache<>,연동문제
    ⇒해결,태그 이름이 일치하지 않는 오류가 발생
    ⇒ Java 코드에서 적절한 헬퍼 메서드를 제공
     
    detail-main
    {{> layout/header}} <!--커뮤니티 시작--> <section id="section01"> <div class="container"> <div class="page-wrapper"> <h3 class="page-title mb-20"> 커뮤니티 사연보기 </h3> <div class="page-content"> <div class="comm"> <div class="comm-nav"> <div class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="/comm">모든 사연</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}GENERAL_CONCERNS{{/categoryHelper.isActiveCategory}}" href="/comm?category=GENERAL_CONCERNS">일반고민</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}CAREER_JOBS{{/categoryHelper.isActiveCategory}}" href="/comm?category=CAREER_JOBS">취업/진로</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}WORK_LIFE{{/categoryHelper.isActiveCategory}}" href="/comm?category=WORK_LIFE">직장</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}RELATIONSHIPS{{/categoryHelper.isActiveCategory}}" href="/comm?category=RELATIONSHIPS">연애</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}SOCIAL_INTERACTIONS{{/categoryHelper.isActiveCategory}}" href="/comm?category=SOCIAL_INTERACTIONS">대인관계</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}ADDICTION_OBSESSION{{/categoryHelper.isActiveCategory}}" href="/comm?category=ADDICTION_OBSESSION">중독/집착</a> </li> <li class="nav-item"> <a class="nav-link {{#categoryHelper.isActiveCategory}}FINANCE_BUSINESS{{/categoryHelper.isActiveCategory}}" href="/comm?category=FINANCE_BUSINESS">금전/사업</a> </li> </ul> </div> </div> </div> </div> <!--필터 시작--> <div class="comm-filter mb-20"> <button class="active black-background">✨최신순</button> <button>👩‍⚕️전문답변</button> <button>😍공감순</button> </div> <!--필터 끝--> <!--컨텐츠 시작--> <div class="c-card"> {{#allCommsWithReplyList}} <div class="c-card-body"> <a href="/comm-detail/{{id}}"> <h4 class="card-title mb-10">{{title}}</h4> <div class="community-cartegory"> <div class="category main-color">{{category}}</div> <div class="user-info"> <figure><img src="/images/level1.png" alt="회원이미지"></figure> <span>{{writerName}}</span> </div> </div> <p class="card-text mb-20">{{content}}</p> </a> <div class="link-wrapper"> <a href="#" class="card-link like">❤<em class="count">1</em></a> <a href="#" class="card-link reply">💌<em class="count">{{replies}}</em></a> </div> {{#expertReplies}} {{#userRole}} <div class="expert-reply"> <div class="expert-reply-info mb-10"> <figure><img src="/images/user.png" alt={{profileImage}}></figure> <span class="expert-reply-name active-color">{{expertName}} 님의 전문답변</span> </div> <p class="reply-content"> {{solution}} </p> </div> {{/userRole}} {{/expertReplies}} </div> {{/allCommsWithReplyList}} </div> <!--컨텐츠 끝--> <!--페이지네이션 시작--> <div class="comm-pagination"> <nav aria-label="..."> <ul class="pagination"> <li class="page-item disabled"> <span class="page-link">Previous</span> </li> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-item active" aria-current="page"> <span class="page-link">2</span> </li> <li class="page-item"><a class="page-link" href="#">3</a></li> <li class="page-item"> <a class="page-link" href="#">Next</a> </li> </ul> </nav> </div> <!--페이지네이션 끝--> </div> </div> </div> </div> </section> <!--컨텐츠 끝--> </div> <!--커뮤니티 끝--> {{> layout/footer}}
     

    06.28 현재상황

    notion image
    카테고리를 누르면 해당 url로 바뀌는 것까지 구현
    ⇒ 지금 해야 할 것은, 해당 url로 누르면 글들이 해당 카테고리만 조회되게
     
     
    import React from "react"; import { useSearchParams } from "react-router-dom"; function List(props) { const [searchParams, setSearchParams] = useSearchParams(); let page = searchParams.get("page"); // 두번째 방법 //const navigate = useNavigate(); function next() { // 쿼리스트링 값이 변경되면서 화면 새로 불러짐 setSearchParams({ page: Number(page) + 1 }); //let newPage = Number(page) + 1; //navigate("/list?page=" + newPage); } console.log("화면 새로 불러짐"); return ( <div> <h1>List page : {page}</h1> <button onClick={next}>다음페이지</button> </div> ); } export default List;
     
    import React from "react"; import { useNavigate, useParams } from "react-router-dom"; function Info(props) { const { id } = useParams(); const navigate = useNavigate(); function moveList() { navigate(`/list?page=0`); } return ( <div> <h1>Info 번호 : {id}</h1> <button onClick={moveList}>리스트페이지이동</button> </div> ); } export default Info;
    Share article
    Contents
    카테고리 더미 생성쿼리생성commservice무조건 테스트!!만난 오류들06.28 현재상황

    Coding's note

    RSS·Powered by Inblog