728x90
DB연결
application.properties에 다음 내용 작성
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.url=jdbc:mysql://localhost:3306/board
BoardController 작성
package com.study2.board.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BoardController {
@GetMapping("/")
@ResponseBody
public String main() {
return "Hello World";
}
}
GET 메서드로 요청이 오면 "Hello World" 라는 글자를 그대로 띄워줄 수 있는 애노테이션이 @ResponseBody이다.
MySQL Workbench 실행 후 스키마, 테이블 생성
엔티티는 테이블을 의미
게시글 번호, 제목, 내용 대로 엔티티를 생성
@ID는 PK를 의미, @GeneratedValue의 strategy(전략)은 IDENTITY는 mariadb, mysql / SEQUENCE는 oracle / AUTO는 자동 지정
package com.study2.board.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Data;
@Entity
@Data
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String content;
}
boardWritePro 메서드의 매개 변수를 받는 양이 많아지게 되면 객체를 생성해서 객체를 전달하는 방법을 이용해 간단하게 작성할 수 있다.
package com.study2.board.controller;
import com.study2.board.entity.Board;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BoardController {
@GetMapping("/board/write") // localhost:8080/board/write 주소에 매핑
public String boardWriteForm() {
return "boardwrite"; // templates의 html 파일의 이름을 작성
}
@PostMapping("/board/writepro")
public String boardWritePro(Board board) {
System.out.println(board.getTitle());
return "";
}
}
실행해서 제목을 전달해보면 콘솔에 메시지가 출력된다.
DB에 글 작성 처리
BoardRepository 작성
JpaRepository를 상속받고 Generic으로 타입을 지정(첫 번째는 엔티티명, 두 번째는 PK의 자료형을 지정)
package com.study2.board.repository;
import com.study2.board.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface BoardRepository extends JpaRepository<Board, Integer> { // 엔티티는 Board, PK의 타입은 Integer
}
BoardService를 생성하고 BoardRepository를 주입받기
package com.study2.board.service;
import com.study2.board.entity.Board;
import com.study2.board.repository.BoardRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public void write(Board board) {
boardRepository.save(board);
}
}
BoardController에도 BoardService를 주입받기
package com.study2.board.controller;
import com.study2.board.entity.Board;
import com.study2.board.service.BoardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping("/board/write") // localhost:8080/board/write 주소에 매핑
public String boardWriteForm() {
return "boardwrite"; // templates의 html 파일의 이름을 작성
}
@PostMapping("/board/writepro")
public String boardWritePro(Board board) {
boardService.write(board);
return "";
}
}
localhost:8080/board/write 요청하여 내용 작성 후 버튼 클릭하면 DB에 저장되는 것을 확인할 수 있다.
728x90
'스프링 부트 > [스프링 부트] 게시판 무작정 따라하기' 카테고리의 다른 글
[스프링 부트] 게시판 무작정 따라하기 - 7. 파일 업로드 (0) | 2023.03.13 |
---|---|
[스프링 부트] 게시판 무작정 따라하기 - 6. 메시지 띄우기 (0) | 2023.03.13 |
[스프링 부트] 게시판 무작정 따라하기 - 4. 게시글 삭제 (0) | 2023.03.13 |
[스프링 부트] 게시판 무작정 따라하기 - 3. 게시글 상세 페이지 (0) | 2023.03.12 |
[스프링 부트] 게시판 무작정 따라하기 - 2. 게시글 리스트 (0) | 2023.03.12 |