🌱

1-2. 데이터베이스 연결하기

2. 기능 구현 하기

JPA를 사용하기 위해 Mybatis를 사용하지 않았습니다.

게시판 글 연결 하기

데이터 베이스를 연결 하기위해선 먼저 application.properties 를 설정해야된다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3306/board serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=532077 spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql=true
Java
복사
폴더 구조
Controller
ㄴ TestController (HTTP 연결)
Entity
ㄴ TestEntity (데이터 베이스 직접 연결)
Repository
ㄴ TestRepository (데이터를 저장하고 불러오는 로직 담당)

Controller 구성

@Controller public class TestController { private static Logger logger = LoggerFactory.getLogger(TestController.class); @Autowired TestRepository testRepository; @GetMapping("/") public String Hello(Model model) { model.addAttribute("list", testRepository.findAll()); return "index"; } @GetMapping("/write") public String Write(Model model) { return "write"; } @ResponseBody @RequestMapping(value = "/register", method = RequestMethod.POST) public String Register(Model model, HttpServletRequest request){ String Title = request.getParameter("title"); String Content = request.getParameter("content"); String Author = request.getParameter("name"); TestEntity entity = new TestEntity(Title, Content, Author); testRepository.save(entity); return "Y"; } @GetMapping("/board/{boardId}") public String Content(Model model, @PathVariable String boardId) { long ContentId = Long.parseLong(boardId); String Content = testRepository.findTestEntityById(ContentId).getContent(); model.addAttribute("contnet", Content); return "board"; } }
Java
복사

Repository 구성

@Repository public interface TestRepository extends JpaRepository<TestEntity, Long> { public TestEntity findTestEntityById(long id); }
Java
복사

Entity 구성

@Entity @Getter @Setter @NoArgsConstructor @Table(name = "boardlist") public class TestEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String title; private String content; private String author; private LocalDateTime createdAt; @PrePersist public void prePersist() { this.createdAt = LocalDateTime.now(); } public TestEntity(String title, String content, String author) { this.title = title; this.content = content; this.author = author; } }
Java
복사
어노테이션
역활
@PrePersist
repository에서 .save() 될때 호출
@Getter
내부의 멤버변수에 저장된 값을 외부로 리턴.
@Setter
외부로부터 데이터를 전달받아 멤버변수에 저장. (Return 값이 없음)
@NoArgsConstructor
어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다.