model - 폴더명 dto
, entity
생성
DTO는 데이터를 담아서 옮겨주는 역할만 한다.
Service에서 데이터를 가공하고,
entity - 파일명 : Book.java
, Order.java
생성
controller - 파일명 : OrderController.java
, BookController.java
생성
dto - 파일명 : BookDTO.java
생성
package dev.book.bookorder.model.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.ColumnDefault;
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // AUTO_INCREMENT 설정
@Column(name ="BOOK_ID")
private Long id;
private String name;
private String description;
private String author;
private int price;
@Column(nullable = true)
@ColumnDefault("0")
private int amount;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
MySQL에 order라는 예약어가 있기 때문에 Orders로 변경해야했다.
package dev.book.bookorder.model.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
@Table(name="ORDERS") // MySQL 예약어와 충돌하지 않기 위함
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ORDER_ID")
private Long id;
private String userName;
private String address;
private int totalPrice;
// Order 1개에 book이 여러개 가능, Order이 연관관계 주인(N)이다.
@ManyToOne
@JoinColumn(name ="BOOK_ID") // Book의 id와 Order의 id
private Book book;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(int totalPrice) {
this.totalPrice = totalPrice;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
}
package dev.book.bookorder.model.dto;
import dev.book.bookorder.model.entity.Book;
public class BookDTO {
private Long id;
private String name;
private String description;
private String author;
private int price;
private int amount;
// entity는 기본 생성자를 반드시 생성해야하지만, DTO는 생성하지 않아도 ok
// DB는 Entity로 반환하므로, DTO로 타입을 변환해야한다.
// Book book = **Book entity**에 있는 정보를 BookDTO에 맵핑하는중
// 실제 화면에서 사용할 것만 book entity에서 가져오면 된다
public BookDTO(Book book){
this.id = book.getId();
this.name = book.getName();
this.description = book.getDescription();
this.author =book.getAuthor();
this.price = book.getPrice();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package dev.book.bookorder.controller;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import dev.book.bookorder.model.dto.BookDTO;
@RestController
@RequestMapping("/api/v1/books") // localhost:8090/api/v1/books~
// GET localhost:8090/api/v1/books~ : 전체 책 데이터 가져오기
public class BookController {
// GetMapping을 적지 않으면 = localhost:8090/api/v1/books
@GetMapping()
public List<BookDTO> findAllBooks(){
// service -> repository -> DB
// 전체 책 데이터 조회
return null;
}
}
까지만 적고 실행해보기
실행은 BookorderApplication.java
에서 F5
누르면 된다 !
1) 모든 DB 조회 : show databases;
2) DB 생성 : create database DB이름;
3) 현재 사용 중인 DB 조회 : select database();
4) 사용할 DB로 변경 : use DB이름;
5) 현재 사용 중인 DB가 갖고 있는 Table 조회 : show tables;
6) Table 정보 조회 : desc Table명
7) Table 데이터 조회 : select * from Table명;
show databases;
use testdb;
, show tables;
, desc book;
, desc orders;
결과