[6] CRUD 게시판 프로젝트 - Maven 버전 Spring Boot 설치 및 My-Batis 셋팅
2023. 7. 12. 23:08ㆍGithub 프로젝트/게시판프로젝트
728x90
반응형
SMALL
Github 저장소 :https://github.com/BerkleyLim/project_board
개발 환경은
Front : React 기반
Back-End : Spring Boot 기반
DB : My-SQL 기반
지난 시간까지 React를 이용한 CRUD를 구현하였고, My-Batis 기반으로 SQL문 생성까지 진행하였습니다..
현재 데이터를 저장하고 사용하기 위해 Back-End와 Front-end와 API 통신을 하여 Back-End CRUD 기능을 구현하도록 하기 위해 DB 활용은 My-Batis로 이용하여 사용을 할 예정입니다.
사용 전, 먼저 Spring Boot 환경 설정 셋팅 작업을 진행 하도록 하겠습니다
Spring Boot는 Maven을 이용하여 설정을 해보도록 하겠습니다..
1) VS Code를 열어 "ctrl + p" 클릭 후 아래와 같이 입력
이후,
- Specify Spring Boot version: : spring 버전 설정
- Specify Project language: : spring 에 사용할 언어 설정 (필자는 java로 설정)
- Input Group Id : 본인이 설정하고 싶은 main package
- Input Artifact Id : 본인이 프로젝트명을 지정 하고 싶은 이름 설정 (필자는 scroll_project_back 으로 설정)
- Specify packaging type : 아무거나 클릭 (필자는 Jar로 설정)
- Specify Java version : 회사별 java 버전은 11을 주로 쓰기 때문에 11로 설정
- Choose dependencies : spring library에서 사용할 것을 셋팅
(추후, mavenrepository 에서 가져와 gradle.build 에 별도로 추가 할 수 있음)
먼저, Spring Boot DevTools,. Lombok, MyBatis Framework, spring web, spring data JDBC, h2, mysql driver 클릭 후 엔터
폴더 선택시 spring boot project 해당 폴더에 설정 후 Generate into this folders 클릭
아래와 같이 설치 완료 함을 확인 가능합니다.
2) 아래와 같이 pom.xml 파일에 dependency에 설정이 되어있으면 정상적으로 설치 할 수 있음을 가리킵니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>2.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
3) 이후, <application.property => application.yml> MyBatis를 연동합니다.
server:
shutdown: graceful
spring:
h2:
console:
enabled: true
datasource:
url: jdbc:mysql://localhost:3306/{본인 DB명}?useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&autoReconnect=true
driverClassName: com.mysql.cj.jdbc.Driver
password: {본인 DB 패스워드} # 비밀번호 수정
username: {본인 DB 유저명}
devtools:
livereload:
enabled: true
sql:
init:
encoding: UTF-8
mybatis:
type-aliases-package: com.example.board_back.entity
configuration:
cache-enabled: true
use-column-label: true
use-generated-keys: false
map-underscore-to-camel-case: true
default-statement-timeout: 25000
jdbc-type-for-null: NULL
mapper-locations: classpath:/mapper/*Mapper.xml
4) ./configuration/WebConfig.java 에서 react 서버와 Cors 문제 해결 하기 위해 아래와 같이 설정
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/api/**")
.allowedOrigins("http://localhost:3000");
}
}
5) resources 디렉토리의 mapper/BoardMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.board_back.mapper.BoardMapper">
<select id="selectList" resultType="Board">
select * from board
</select>
</mapper>
6) java 디렉토리의 entity/Board.java
package com.example.board_back.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Board {
Long bno;
String title;
String contents;
}
7) java 디렉토리의 mapper/BoardMapper.java
package com.example.board_back.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.example.board_back.entity.Board;
@Repository
@Mapper
public interface BoardMapper {
List<Board> selectList();
}
8) java 디렉토리의 service/BoardService.java
package com.example.board_back.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.board_back.entity.Board;
import com.example.board_back.mapper.BoardMapper;
@Service
public class BoardService {
@Autowired
BoardMapper boardMapper;
public List<Board> selectList() {
return boardMapper.selectList();
}
}
9) java 디렉토리의 controller/BoardController.java
package com.example.board_back.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.board_back.entity.Board;
import com.example.board_back.service.BoardService;
@RestController
@RequestMapping("/api/board")
public class BoardController {
@Autowired
BoardService boardService;
@GetMapping("/select/list")
public List<Board> selectList() {
return boardService.selectList();
}
}
10) 이때, cmd 창을 열어 아래와 같이 명령어를 입력하고 spring boot를 실행 시켜줍니다.
mvn spring-boot:run
11) POST API을 열어서 아래와 같이 결과 값 나오는지 확인
지난시간에 이어서 진행을 하였더라면 테이블 목록이 존재하지 않으므로 빈값이 나옵니다.
전송하였을 때, 빈값이 나오면 mybatis 연동을 성공적으로 마칠 수 있습니다.
이어서 My-Batis를 이용하여 진행해보도록 하겠습니다.
728x90
반응형
LIST
'Github 프로젝트 > 게시판프로젝트' 카테고리의 다른 글
[8] CRUD 게시판 프로젝트 - Front(React)에서 CRUD API 연동 - Axios 활용 (0) | 2023.07.16 |
---|---|
[7] CRUD 게시판 프로젝트 - Spring Boot MyBatis 추가 및 API 구현 (0) | 2023.07.16 |
[5] CRUD 게시판 프로젝트 - SQL문 CRUD 설계 (0) | 2023.07.12 |
[4] CRUD 게시판 프로젝트 - DBeaver로 DB 생성과 Table 및 Filed 생성 (0) | 2023.07.12 |
[3] CRUD 게시판 프로젝트 - React CRUD 구성 (0) | 2023.07.12 |