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를 입력해주어야 한다. 안그러면 오류남!!
4. 계정확인하기
mysql> select host, user from user;
내가 원하는 계정이 잘 만들어진것을 확인할 수 있다.😁
5. 데이터 테이블 생성하기
나는 위와같은 테이블을 만들었다.
ⅰ. 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 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