(SpringBoot) 게시판 예제
깃허브 repository : SpringBoot class practice
스프링 부트 예제
스프링 부트 프레임 워크로 넘어와서의 게시판 예제입니다.
1. 프로젝트 생성
수정: mysql과 mybatis도 추가해 줘야합니다
2. 테이블 생성
use mydb;
create table tbl_board(
boardId int auto_increment,
title varchar (30) not null,
content varchar(300) not null,
name varchar(30) not null,
primary key(boardId)
);
3. 인터페이스와 매퍼 생성
my batis 의존성 주입을 깜빡했다. build.gradle에 새로 코드를 추가해 주겠다.
수정: controller에 “MapperScan”의 “basePackage”값을 “com.example.springbootpractice로 바꿔줍니다.
수정: 사진을 보면 com.example.springbootpractice.mapper경로를 한번에 만들었는데, 파일을 하나하나 만들어 줘야한다.
주의
기존 Spring framework에서는 sql문을 작성할때 ‘;’을 붙이지 않았지만 SpringBoot에서는 붙여줘야한다.
보면 기존에 쓰던 @Data 대신 @Getter/@Setter를 썼는데, 이것이 충돌이나 오류를 줄일 수 있는 방법이라 했다. 이전 스프링 프로젝트에서는 가끔 원인을 모르게 프로그램이 vo객체를 잘 인식하지 못하는 경우가 발생하기도 했는데 직접 Getter와 Setter를 지정해 주는 것이 이러한 오류를 줄일 수 있다고 한다. 그래도 제일 확실한 방법으로는 직접 코드로 Getter/Setter를 쳐주는 것이 제일 확실하다고 한다.
4. 서비스 생성
Transactional 어노테이션: CRUD 기능을 테스트할때 기능 확인만 하고 commit하지 않고 rollback해주는 어노테이션
주의: 클래스 임포트를 할때
import org.springframework.transaction.annotation.Transactional;
로 올바르게 임포트 해주자.
5. 테스트 메퍼 작성
테스트용으로 테이블에 데이터를 하나 삽입해줍니다.
insert into tbl_board(title, content, name) values('test title', 'test content', 'test');
Controller에서 test용 매퍼를 작성해줍니다.
@GetMapping("/test")
public String test(Model model){
model.addAttribute( "cnt", service.boardCount());
model.addAttribute("test", service.boardList());
return "/board/hello";
}
<hr>
<h1>[[${cnt}]]</h1>
<hr>
<h1>[[${test[0].title}]]</h1>
여기 보면 처음 보는 형태의 코드가 있다. 기존 Spring framework의 jsp에서는 jstl의 형식을 사용했지만 저 형식은 Spring Boot의 Thymeleaf 형식이라고 한다. * Thymeleaf는 SpringBoot의 View를 담당하는 부분이다.
오늘은 여기까지(2023-05-30)