[ Java / SpringBoot ] RESTful한 게시판 만들기2 / 스프링 부트 프로젝트 생성하고 데이터베이스 연결 & mybatis 설정 & DTO 작성
낫쏘링
2023. 9. 10. 18:39
728x90
[ 스프링 부트 프로젝트 생성 ]
1. File - New - Spring Starter Project 2. 프로젝트 이름은 board / 빌드 관리 도구는 Gradle / 자바 버전은 17으로 사용할 예정이다. 기본적인 스프링부트 프로젝트 생성 및 설정은 이미 포스팅해놨다. 이전 포스팅과 차이점은 Maven 대신 Gradle을 사용한다는 것 정도? (나는 이미 board라는 이름의 프로젝트를 생성해놔서 경고문이 뜬다.) 3. 사용할 모듈 의존성 주입 Lombok : Getter, Setter, ToString, RequiredArgsConstructor 등 코드를 훨씬 간단하게 줄여준다. MyBatis Framework : 데이터 베이스를 쉽게 관리하기 위한 라이브러리 Spring Data JDBC : 데이터 베이스 드라이버 로딩 (MySQL Driver 같은 라이브러리와 함께 사용해야한다.) MySQL Driver : 데이터 베이스 중 MySQL을 사용할 경우 Spring Boot DevTools : 코드를 수정했을 때 브라우저에 수정 내용을 자동으로 적용해준다. Spring Web : MVC 패턴 개발을 위한 Controller, Service 등의 어노테이션과 RESTful 개발을 위한 GetMapping PostMapping 등의 어노테이션 제공 (이 것들 외에 파일 첨부 기능 구현할 때 필요한 모듈도 있는데 그건 그때가서 추가할 예정이다.)
[ 데이터 베이스 연결 ]
1. application.properties 파일에 DB 연결 설정하고 로그를 위한 파일 가져오기 (log4jdbc 사용법) 작성시 주의할 점은 각 라인 끝에 공백이 있으면 안된다. (공백 까지 문자열에 포함해버림)
#db 연결 설정
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/rest_api?serverTimezone=UTC&characterEncoding=UTF8
spring.datasource.username=restapiid
spring.datasource.password=restapipw
# log-back file 설정
logging.config=classpath:logback-spring.xml
[ mybatis 설정 ]
1. application.properties 파일에 mybatis 설정
# mybatis 연동 설정
# 1. dao 파일 매핑
# classpath: => src/main/resources// 가 돼버림 이기 때문에 classpath:/mapper라고 작성하면 src/main/resources// 가 돼버림
# mapper/**/*.xml => 개발자가 정해 놓는 경로 설정 규칙
# mapper 폴더 안에 **폴더 안에 있는 xml 파일들은 모두 mapper로 사용한다.
mybatis.mapper-locations=classpath:mapper/**/*.xml
# 2. dto 패키지 매핑(dto가 모아져있는 패키지1,dto가 모아져있는 패키지2...... - 하나만 있을 경우 하나만 작성 가능)
# mybatis.type-aliases-package=board.mybatis.dto1,board.mybatis.dto2.... 이런식으로도 작성가능하지만
# **으로 한 번에 포함 시킬 수 있다.
# 참고로 내가 설정한 패키지는 board.rest.api이기 때문에
# board.rest.api 패키지 안에 dto라는 패키지를 만들어주면 그 패키지 내에 있는 클래스가dto라는 것을 알려준다.
mybatis.type-aliases-package=board.**.dto
# 자바 변수(카멜)와 db컬럼(스테이크) 자동 매핑
mybatis.configuration.map-underscore-to-camel-case=true
// 이전 mybatis 설정 부분에서 board의 하위에 있는 패키지 중
// dto 패키지에 있는 클래스는 모두 dto로 사용한다고 명시해뒀기 때문에
// 패키지 이름은 board.rest.api.dto 로 생성해줬다.
package board.rest.api.dto;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
// 롬복을 사용하면 getter setter toString 메서드를 작성하지 않고 간단하게 사용 가능하다.
// @Data라는 어노테이션은 Getter, Setter, ToStirng을 한 번에 생성해주지만,
// 필요하지 않은 어노테이션도 포함하기 때문에 따로 작성해줬다.
@Getter
@Setter
@ToString
public class BoardDto {
/* 컬럼 중에 deleted_yn은 dto에 저장하지 않는다.
* dto는 계층 간 데이터를 전달할 때 dto에 담아서 주고 받는데 deleted_yn은 데이터를 주고 받을 이유가
* 없기 때문이다. 조건에 따라 그냥 쿼리 상에서 Y와 N으로 수정하거나 조회해주면 된다.
*/
private int boardIdx;
private String title;
private String contents;
private int hitCnt;
private String creatorId;
private LocalDateTime createdDatetime;
private String updaterId;
private LocalDateTime updatedDtetime;
}