[React/연습] #03. React back-end 세팅 (2)
Updated:
이 글에 이어서 백엔드 서버를 구축하자.
MyBatis
이제 DB 작업을 할 때 MyBatis 프레임워크로 사용하도록 설정을 바꾼다.
dependencies 및 properties 수정
build.gradle
의 dependencies에 아래의 내용을 추가하게 되면 이전 글에서처럼 h2-console은 접속이 불가능해진다고 한다.
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'
또한 application.properties
파일은 싹 지우고 다음의 내용을 copy and paste 한다.
# H2 Database
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
#spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.url=jdbc:log4jdbc:h2:mem:testdb
# JPA
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.defer-datasource-initialization=true
# Mybatis
mybatis.mapper-locations=classpath:mapper/**.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.call-setters-on-nulls=false
# 쿼리 로그 관련 설정
logging.level.jdbc.sqlonly=OFF
logging.level.jdbc.sqltiming=INFO
logging.level.jdbc.resultsettable=OFF
logging.level.jdbc.audit=OFF
logging.level.jdbc.resultset=OFF
logging.level.jdbc.connection=OFF
그리고 application.properties
와 같은 위치에 log4jdbc.log4j2.properties
파일을 생성한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
Mapper 생성
BoardEntity.java
파일을 만들었던 db
폴더 안에 BoardMapper.java
파일을 만든다.
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BoardMapper {
List<BoardEntity> getBoardList();
}
그리고 resources
폴더에 mapper
폴더를 만들고 board.xml
파일을 생성한다.
여기서 주의할 점은 namespace
와 resultType
이름을 내 프로젝트명에 맞게 써야 한다는 점이다. (그대로 복붙 x)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper3.0//EN" "http://mybatis.org/schema/mybatis-3-mapper.dtd">
<mapper namespace="com.example.practice.db.BoardMapper">
<select id="getBoardList" resultType="com.example.practice.db.BoardEntity">
SELECT IDX
, TITLE
, CONTENTS
, CREATED_BY
, CREATED_AT
FROM TB_BOARD
</select>
</mapper>
Controller
MyBatis Mapper의 동작을 구현하기 위해 Controller를 만들 차례다.
컨트롤러 맛보기
메인 클래스와 같은 위치에 컨트롤러 클래스 BoardController.java
파일을 만든다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.practice.db.BoardEntity;
import com.example.practice.db.BoardMapper;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@RestController
public class BoardController {
private final BoardMapper boardMapper;
@GetMapping("/board")
List<BoardEntity> getBoardList() {
return boardMapper.getBoardList();
}
}
@GetMapping
annotation을 쓰게 되면 데이터를 조회하는 URL을 지정할 수 있다.
이 예제에서는 localhost:8080/board
로 접속하면 TB_BOARD
에 저장된 데이터를 조회할 수 있다.
여기까지 하고 서버를 실행하면 다음과 같은 결과가 나타난다.
터미널에선 TB_BOARD
가 잘 생성됐다고 뜨고, 브라우저에서는 데이터가 json
형태로 뿌려진다.
Leave a comment