Spring_boot/Project

[Spring] Spring JPA 이용한 단순 게시물 처리

달의요정루나 2021. 7. 31. 23:09

1. 프로젝트를 작성한다.

2. 작성하는 프로젝트에는 Spring Boot DevTools, Lombok, Spring Data JPA, MySQL Driver, Spring Web을 생성합니다.

3. 생성 후 application.properties에 위와 같이 내용을 넣습니다.(자세한 내용은 아래 게시물 참조)

https://julian5383.tistory.com/36?category=880390 

 

[Spring] 엔티티 클래스 설계하기(feat. SQL)

1. 우선 Spring Starter Project로 boot02-1이라는 프로젝트를 만듭니다. 2. 프로젝트를 생성할때 라이브러리 모듈은 Lombok, Spring Data JPA, MySQL Driver, Spring Web을 선택합니다. (참고로 스프링 부트는..

julian5383.tistory.com

4. org.zerock 관련 패키지 들을 생성합니다.(Board.java는 이전 게시물하고 내용이 같습니다. 아래 게시물 참조)

https://julian5383.tistory.com/36?category=880390 

 

[Spring] 엔티티 클래스 설계하기(feat. SQL)

1. 우선 Spring Starter Project로 boot02-1이라는 프로젝트를 만듭니다. 2. 프로젝트를 생성할때 라이브러리 모듈은 Lombok, Spring Data JPA, MySQL Driver, Spring Web을 선택합니다. (참고로 스프링 부트는..

julian5383.tistory.com

- BoardController.java

package org.zerock.controller;


import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.zerock.domain.Board;
import org.zerock.persistence.BoardRepository;

@RestController
public class BoardController {

	@Autowired
	private BoardRepository boardRepo;
	
	@PostConstruct
	public void init() {
		for (int i = 1; i <= 200; i++) {
			Board board = new Board();
			board.setTitle("게시글 제목 "+i);
			board.setContent("게시글 내용 넣기 "+i);
			board.setWriter("user0"+(i%10));
			
			boardRepo.save(board);
		}
	}
	
	@GetMapping("/insert")
	public void insert() {
		
	}
}

- BoardRepository.java

package org.zerock.persistence;

import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.domain.Board;

public interface BoardRepository extends JpaRepository<Board, Long>{

}

5. BoardController.java, BoardRepository.java의 내용을 작성합니다.

5번에 작성한 코드를 데이터베이스를 연결하고 tbl_boards를 보면 다음과 같이 생성된다.

6. Database Development로 이동하고 이전에 생성해 놓은 데이터베이스에서 SpringMySQL을 연결합니다.

- BoardRepository.java

package org.zerock.persistence;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.domain.Board;

public interface BoardRepository extends JpaRepository<Board, Long>{

	public List<Board> findBoardByTitle(String title); 
    //쿼리 메소드를 이용해서 제목으로 검색하도록 인터페이스를 구성한다.
	
}

- BoardController.java

package org.zerock.controller;


import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.zerock.domain.Board;
import org.zerock.persistence.BoardRepository;

@RestController
public class BoardController {

	@Autowired
	private BoardRepository boardRepo;
	
	@PostConstruct
    //postcontruct를 이용하면 생성자가 호출될 시 여러번 초기화가 되는 것을 막을 수 있다.
	public void init() {
		for (int i = 1; i <= 200; i++) {
			Board board = new Board();
			board.setTitle("게시글 제목 "+i);
			board.setContent("게시글 내용 넣기 "+i);
			board.setWriter("user0"+(i%10));
			
			boardRepo.save(board);
		}
	}
	
	@GetMapping("/insert")
	public void insert() {
		
		boardRepo.findBoardByTitle("게시글 제목 1").stream().forEach(System.out::println);
		//게시글에서 제목에서 게시물 제목 1을 분류해 낸다.
	}
}

7. 다음과 같이 코드를 작성하고 Run as에서 Spring boot App을 눌러 작동시킨다.

8. 작동시키고 크롬에서 다음과 같이 BoardController.java에서 GetMapping에 작성한 값에 따라 주소를 작성한다.

9. Console창을 보면 인터페이스에 작성한 값대로 게시글 제목 1을 분류해낸다.