본문 바로가기
컴퓨터/SpringBoot

[SpringBoot] photoBlog 개인 프로젝트_여러 이미지 업로드 구현 (3) 글, 이미지 dto와 view

by 버니케이 2022. 3. 11.
반응형

 

1. view 설계
2. dto

 

1. view 설계

1-1 메인 view

메인 페이지는 이렇게 구현할 예정이다.

글을 작성하면 이미지와 제목이 출력되게 할 것이다.

친구 블로그!

 

1-2 새 글 쓰기, 글 수정

새 글을 쓸때는

제목, 내용, 이미지

세 가지만 넣어도 될 것 같다.

 

이미지는 여러 개 넣을 계획이다. (1~5개)

 

 

 

1-3 글 디테일

글 상세보기를 누르면

제목, 내용, 이미지를 이렇게 출력할 것이다.

 

 

2. dto

위에서 구상한 view 를 바탕으로 Dto 클래스를 만들었다.

view 페이지에 출력할 데이터를 정할 것이다.

 


2-1 MainPostDto

package com.example.blog.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;


@Data
@Builder
@AllArgsConstructor
public class MainPostDto {

    private Long id;
    private String title;
    private String content;
    private String imgUrl;
}

view 페이지에 출력할 블로그 데이터이다.

 

글의 id, 제목, 내용, 이미지경로 변수를 선언했고, 

 

@Data 로 게터세터

@Builder 로 Builder(), Build() _값 세터

@AllArgsConstructor 로 전체생성자

 

를 설정해줬다.

 


2-2 PostDto

package com.example.blog.dto;

import com.example.blog.entity.PostEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PostDto {

    private Long id;

    @NotBlank(message = "제목을 입력해 주세요!")
    private String title;

    @NotBlank(message = "내용을 입력해 주세요!")
    private String content;

    public PostDto(Long id,String title, String content) {
        this.id = id;
        this.title = title;
        this.content = content;
    }

    // 수정할 때 글 이미지 아이디를 저장하는 리스트
    private List<Long> postImgIdList = new ArrayList<>();

    // 수정할 때 글 안의 이미지 정보를 저장하는 리스트
    private List<ImgDto> postImgDtoList = new ArrayList<>();

    public PostEntity toEntity (){
        // 글 수정할 때 사용함
        return new PostEntity(id,title,content);
    }

}

view 페이지에 출력할 블로그 +이미지 데이터이다.

변수가 다섯 개이다. (id, title, content, postImgList, postImgDtoList)

 

id, title, content 변수로 받는 생성자를 선언했다.

 

위와 마찬가지로 @Data, @AllArgsConstructor 어노테이션을 선언해줬다.

 

 

글 수정 시 이미지 id 를 저장할 리스트를 선언해줬다.

글 안에 이미지가 저장되기 때문이다.

private List<Long> postImgIdList = new ArrayList<>();

 

 

마찬가지로 글 수정 시 이미지 정보를 저장할 리스트를 선언해줬다.

private List<ImgDto> postImgDtoList = new ArrayList<>();

 

 


2-3 ImgDto

package com.example.blog.dto;

import com.example.blog.entity.ImgEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ImgDto {

    private Long id;

    private String imgName;

    private String oriImgName;

    private String imgUrl;

    private String repimgYn;

    public ImgDto(String imgName, String oriImgName, String imgUrl) {
        this.imgName = imgName;
        this.oriImgName = oriImgName;
        this.imgUrl = imgUrl;
    }
    
}

블로그 이미지를 위한 dto 이다.

위와 마찬가지로 @Data, @AllArgsConstructor 어노테이션을 선언해줬다.

혹시몰라서 @NoArgsConstructor 로 빈 생성자도 선언해줬다.

 

 

그리고 repimgYn 이라는 변수는 대표이미지이다.

main 페이지에 대표이미지만 출력하고 싶었기 때문에 선언해줬다.

 

 

그리고 대표이미지는 수정하지 않을거여서 (service 에서 지정해줄 예정이다.)

대표이미지 변수만 제외한 생성자를 만들어줬다.

 

반응형

댓글