[6] CRUD 게시판 프로젝트 - Maven 버전 Spring Boot 설치 및 My-Batis 셋팅

2023. 7. 12. 23:08Github 프로젝트/게시판프로젝트

728x90
반응형
SMALL

Github 저장소 :https://github.com/BerkleyLim/project_board

 

GitHub - BerkleyLim/project_board: Spring Boot + React CRUD형 게시판 만들기 프로젝트 안내서

Spring Boot + React CRUD형 게시판 만들기 프로젝트 안내서. Contribute to BerkleyLim/project_board development by creating an account on GitHub.

github.com

 

개발 환경은

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