From 002b1a7e1a8f6bbc9e94aea0808760fc1855d965 Mon Sep 17 00:00:00 2001 From: boxinthechaos Date: Thu, 20 Feb 2025 00:15:32 +0900 Subject: [PATCH] =?UTF-8?q?2025-02-19=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../BoardController/boardcontroller.java | 55 ++++++++++++++++ .../task/_1/_1/global/BoardDTO/boarddto.java | 15 +++++ .../_1/global/Repositroy/bordRespository.java | 9 +++ .../global/annotation/task/info/TaskInfo.java | 2 +- .../task/_1/_1/global/entity/Article.java | 30 +++++++++ .../_1/_1/global/entity/BaseIdxEntity.java | 2 + .../task/_1/_1/global/service/service.java | 62 +++++++++++++++++++ 8 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardController/boardcontroller.java create mode 100644 src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardDTO/boarddto.java create mode 100644 src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/Repositroy/bordRespository.java create mode 100644 src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/Article.java create mode 100644 src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/service/service.java diff --git a/build.gradle b/build.gradle index 34ece7c..96b3260 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ version = '0.0.1-SNAPSHOT' java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(23) } } diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardController/boardcontroller.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardController/boardcontroller.java new file mode 100644 index 0000000..e14c556 --- /dev/null +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardController/boardcontroller.java @@ -0,0 +1,55 @@ +package com.gsm._8th.class4.backed.task._1._1.global.BoardController; + +import com.gsm._8th.class4.backed.task._1._1.global.entity.Article; +import com.gsm._8th.class4.backed.task._1._1.global.service.service; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Controller +@RequiredArgsConstructor +@RequestMapping("/articles") +public class boardcontroller { + + private final service Service; + private final com.gsm._8th.class4.backed.task._1._1.global.Repositroy.bordRespository bordRespository; + + //게시물 조회 + @GetMapping("/articles") + public ResponseEntity> getArticles(){ + return Service.getArticles(); + } + + //특정 게시물 조회 + @GetMapping("/{articlesid}") + public ResponseEntity
getArticlesById(@PathVariable Long id){ + return Service.getArticlesById(id); + } + + //게시물 삭제 + @DeleteMapping("/{articlesid}") + public ResponseEntity
deleteArticle(@PathVariable Long id){ + if(bordRespository.existsById(id)){ + bordRespository.deleteById(id); + return ResponseEntity.noContent().build(); + } + else{ + return ResponseEntity.notFound().build(); + } + } + + //게시물 수정 + @PatchMapping("/{articlesid}") + public ResponseEntity
updateArticles(@PathVariable Long id, @RequestBody Article article) { + return Service.updateArticles(id,article.getTitle(),article.getContent()); + } + + @PostMapping("/articels") + public ResponseEntity
creatArticles(@RequestBody Article article){ + return Service.creatArticles(article.getTitle(), article.getContent()); + } +} + diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardDTO/boarddto.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardDTO/boarddto.java new file mode 100644 index 0000000..12048da --- /dev/null +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/BoardDTO/boarddto.java @@ -0,0 +1,15 @@ +package com.gsm._8th.class4.backed.task._1._1.global.BoardDTO; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@NoArgsConstructor +@ToString +public class boarddto { + private String title; + private String content; +} diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/Repositroy/bordRespository.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/Repositroy/bordRespository.java new file mode 100644 index 0000000..285ac18 --- /dev/null +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/Repositroy/bordRespository.java @@ -0,0 +1,9 @@ +package com.gsm._8th.class4.backed.task._1._1.global.Repositroy; + +import com.gsm._8th.class4.backed.task._1._1.global.entity.Article; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface bordRespository extends JpaRepository { +} diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/annotation/task/info/TaskInfo.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/annotation/task/info/TaskInfo.java index c68daf8..d0421a0 100644 --- a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/annotation/task/info/TaskInfo.java +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/annotation/task/info/TaskInfo.java @@ -10,7 +10,7 @@ /** * 과제 정보를 출력하는 클래스에 적용되는 어노테이션 * - * @Componset 어노테이션을 사용하여 빈으로 등록된 클래스에 적용 + * @Component 어노테이션을 사용하여 빈으로 등록된 클래스에 적용 * @Slf4j 어노테이션을 사용하여 로깅을 위한 Logger 객체를 생성 * 어노테이션은 런타임에도 유지되어야 하므로 @Retention 어노테이션을 사용하여 런타임에도 유지되도록 함 */ diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/Article.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/Article.java new file mode 100644 index 0000000..0ea5d05 --- /dev/null +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/Article.java @@ -0,0 +1,30 @@ +package com.gsm._8th.class4.backed.task._1._1.global.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Table(name = "articles") +@NoArgsConstructor +public class Article extends BaseIdxEntity { + + @Column(nullable = false, length = 255) + private String title; + + @Column(nullable = false, length = 255) + private String content; + + public Article(String title, String content) { + this.title = title; + this.content = content; + } + + public void update(String title, String content) { + this.title = title; + this.content = content; + } +} diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/BaseIdxEntity.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/BaseIdxEntity.java index 72bf006..ea1daed 100644 --- a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/BaseIdxEntity.java +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/entity/BaseIdxEntity.java @@ -12,8 +12,10 @@ abstract class BaseIdxEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "idx", nullable = false, updatable = false, insertable = false, unique = true) protected Long idx; + @Column(nullable = false, name = "created_at") protected LocalDateTime createdAt; + @Column(nullable = false, name = "updated_at") protected LocalDateTime updatedAt; diff --git a/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/service/service.java b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/service/service.java new file mode 100644 index 0000000..89fb32e --- /dev/null +++ b/src/main/java/com/gsm/_8th/class4/backed/task/_1/_1/global/service/service.java @@ -0,0 +1,62 @@ +package com.gsm._8th.class4.backed.task._1._1.global.service; + +import com.gsm._8th.class4.backed.task._1._1.global.Repositroy.bordRespository; +import com.gsm._8th.class4.backed.task._1._1.global.entity.Article; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class service { + private final bordRespository bordrespository; + + //게시물 조회 + public ResponseEntity> getArticles() { + List
articles = bordrespository.findAll(); + return ResponseEntity.ok(articles); + } + + //특정 게시물 조회 + public ResponseEntity
getArticlesById(Long id){ + Article article = bordrespository.findById(id).orElse(null); + if (article != null){ + return ResponseEntity.ok(article); + } + else { + return ResponseEntity.notFound().build(); + } + } + + //게시물 생성 + public ResponseEntity
creatArticles(String title, String content){ + Article article = new Article(title,content); + Article savearticle = bordrespository.save(article); + return ResponseEntity.ok(savearticle); + } + + //특정 게시물 수정(업데이트) + public ResponseEntity
updateArticles(Long id, String title, String content){ + Article article = bordrespository.findById(id).orElse(null); + if(article != null){ + article.update(title,content); + return ResponseEntity.ok(article); + } + else { + return ResponseEntity.notFound().build(); + } + } + + //특정 게시물 삭제 + public ResponseEntity
deleteArticle(Long id){ + if(bordrespository.existsById(id)){ + bordrespository.deleteById(id); + return ResponseEntity.noContent().build(); + } + else{ + return ResponseEntity.notFound().build(); + } + } +}