Spring 과 MySql 연결하여 MySql의 데이터를 서버에 올려보자

박해인·2022년 12월 4일
2

① MySql 계정설정 및 DB/TABLE 생성

spring에서 MySql 계정과 비밀번호를 입력하는데, 서버는 그 계정과 비밀번호를 이용해 Mysql에 접속하기 때문이다. 그러므로 Mysql 계정설정을 해야한다.

cmd에 들어가서

1. root계정으로 접속

C:\Users\사용자이름>mysql -u root -p

2. mysql DB로 접속하기

mysql> use mysql;

3. 계정 생성하기

ⓐ 비밀번호 없는 계정 만들기

mysql> create user 계정ID; 

ⓑ 외부 호스트도 접속할 수 있는 계정 만들기 + 비밀번호 설정하기

mysql> create user 계정ID@'%' identified by '비밀번호';

ⓒ localhost만 접속할 수 있는 계정 만들기 + 비밀번호 설정하기

mysql> create user 계정ID@localhost identified by '비밀번호';

ⓓ 생성한 계정에 권한 부여하기

mysql> grant all privileges on *.* to 계정ID@'%' idnetified by '비밀번호';
mysql> grant all privileges on DB이름.* to 계정ID@'%' idnetified by '비밀번호';

⚡️⚡️ mySql 8.x 버전부터는 create문 뒤에 바로 grant를 입력해주어야 한다. 안그러면 오류남!!

참고
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=1040204&docId=403745871&qb=bXlzcWwgZ3JhbnQg7Jik66WY&enc=utf8§ion=kin.ext&rank=1&search_sort=0&spq=0

4. 계정확인하기

mysql> select host, user from user;


내가 원하는 계정이 잘 만들어진것을 확인할 수 있다.😁

5. 데이터 테이블 생성하기


나는 위와같은 테이블을 만들었다.

② spring 설정하기

ⅰ. pom.xml에 MySql, MyBatis dependency 추가하기
ⅱ. application.properties 설정하기

ⅰ. pom.xml에 MySql, MyBatis dependency 추가하기
https://mvnrepository.com/
위에 들어가서 MyBatis와 MySql dependency를 찾아 pom.xml에 추가해준다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>demo</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
	<dependency>
	    <groupId>org.mybatis.spring.boot</groupId>
	    <artifactId>mybatis-spring-boot-starter</artifactId>
	    <version>3.0.0</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
	<dependency>
	    <groupId>com.mysql</groupId>
	    <artifactId>mysql-connector-j</artifactId>
	    <version>8.0.31</version>
	</dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>17</release>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

ⅱ. application.properties 설정하기

spring.datasource.url=jdbc:mysql://localhost:3306/계정ID?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul
spring.datasource.username=MySql계정ID
spring.datasource.password=MySql계정비밀번호

③ spring에서 model/controller/mapper 작성하기

spring MVC 디자인 패턴에 맞춰
MVC 패턴이란?
아래와 같은 구조를 갖는 디자인 패턴이다.

1. View

  • 사용자에게 시각적으로 보여주는 부분이다.(UI)

2. Model

  • DB와 연동하여 사용자가 이볅한 데이터나 사용자에게 출력할 데이터를 다루는 일을 한다.
  • controller에서 받은 데이터를 저장하는곳

3. Controller

  • 사용자가 접근한 URL에 따라 요청을 파악한다.
  • URL에 맞는 메서드를 호출한다. 그리고 최종적으로 나온 결과를 Model에 저장한다.

우리는 spring에서 Model과 Controller를 생성하려고 한다.

1. model
mysql에서 받은 데이터를 저장하는 곳
2. controller
사용자가 접근한 URL에 따라 요청을 파악한다.
3. mapper

Mybatis 매핑 xml에 기재된 SQL문을 호출하기 위한 인터페이스로 controller에서 사용한다.

✔️ model/controller/mapper 패키지를 생성한다.

✔️model package에 Stock.java 파일을 생성한다.
Stock.java

package com.example.demo.model;


public class Stock {
	private int market_id;
	private int item_id;
	private String item_name;
	private String item_price;
	private String item_stock;
	public Stock(int market_id, int item_id, String item_name, String item_price, String item_stock) {
		super();
		this.market_id = market_id;
		this.item_id = item_id;
		this.item_name = item_name;
		this.item_price = item_price;
		this.item_stock = item_stock;
	}
	//private List Stock;
	
	public int getMarket_id() {
		return market_id;
	}
	public void setMarket_id(int market_id) {
		this.market_id = market_id;
	}
	public int getItem_id() {
		return item_id;
	}	
	public void setItem_id(int item_id) {
		this.item_id = item_id;
	}	
	public String getItem_name() {
		return item_name;
	}	
	public void setItem_name(String item_name) {
		this.item_name = item_name;
	}	
	public String getItem_price() {
		return item_price;
	}
	public void setItem_price(String item_price) {
		this.item_price = item_price;
	}
	public String getItem_stock() {
		return item_stock;
	}
	public void setItem_stock(String item_stock) {
		this.item_stock = item_stock;
	}
		
}

✔️controller package에 StockController.java 파일을 생성한다.

StockController.java

package com.example.demo.controller;

import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.mapper.StockMapper;
import com.example.demo.model.Stock;

@RestController
public class StockController {
	private StockMapper mapper;

	public StockController(StockMapper mapper) {
		
	this.mapper = mapper;
	}
	
	@GetMapping("/stock/{item_id}")
	public Stock getStock(@PathVariable("item_id") String item_id) {
		return mapper.getStock(item_id);
	}
	
	@GetMapping("/stock")
	public List<Stock> getStockList(){
		return mapper.getStockList();
	}
}

✔️mapper package에 StockMapper.java 파일(인터페이스)를 생성한다.
StockMapper.java

package com.example.demo.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.example.demo.model.Stock;


@Mapper
public interface StockMapper {
	
	@Select("SELECT * FROM stock WHERE item_id=#{item_id}")
	Stock getStock(@Param("item_id") String item_id);
	
	@Select("SELECT * FROM stock")
	List<Stock> getStockList();
	
}

자 이제 모든 작업을 완료했다.!
postman에 들어가서 내가 원하는대로 서버에 잘 올려졌는지 확인해보자.


잘올라갔네요😆


이 영상을 보며 참고했습니다. XD 많은 도움이 되었습니다!!😇
https://youtu.be/QzHkJsALmyw

profile
갓생살고싶어라

0개의 댓글