JAVA & SQL 20221208

신래은·2022년 12월 25일

JAVA

목록 보기
21/22

DAY 33

EntityEx

package com.greenart.dbconnect.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity(name = "user_info")
// jpa파일은 변수에 언더스코어가 있으면 인식 못함
public class UserInfo {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "ui_seq")   private Integer seq;
  @Column(name = "ui_id")   private String id;
  @Column(name = "ui_pwd")   private String pwd; 
  @Column(name = "ui_reg_dt")   private Date regDt; 
}

RepositoryEx

package com.greenart.dbconnect.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.greenart.dbconnect.entity.UserInfo;

// interface
@Repository
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {
}

ControllerEx

package com.greenart.dbconnect.api;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.greenart.dbconnect.entity.UserInfo;
import com.greenart.dbconnect.repository.UserInfoRepository;

@RestController
public class MemberAPIController {
  @Autowired  UserInfoRepository repository;
  // dependency injection 인터페이스만 만들어놓고 autowired 하면, 
  // 자동으로 repository랑 맞는 객체를 가지고 옴
  // (interface는 객체를 만들수 없으나, autowired를 통하면 만들어짐)
  @PutMapping("/member/join")
  public Map<String, Object> putMemberJoin(@RequestBody UserInfo data) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    data.setRegDt(new Date());
    repository.save(data);
    map.put("status", true);
    map.put("message", "회원이 등록되었습니다.");
    return map;
  }
}

MovieControllerEx

package com.greenart.practice5.api;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.greenart.practice5.data.MovieInfo;

@RestController
@RequestMapping("/api")
public class MovieAPIController {
  private static List<MovieInfo> m_list = new ArrayList<MovieInfo>();
  private static Integer mnextNo = 1;

   @PutMapping("/movie")
  public Map<String, Object> putMovie(@RequestBody MovieInfo data) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    System.out.println(data);
    data.setMovieNo(mnextNo);
    m_list.add(data);
    mnextNo++;
    map.put("status", true);
    map.put("message", "영화가 추가되었습니다.");
    return map;
  }
  @GetMapping("/movie")
  public Map<String, Object> getMovieList() {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    map.put("status", true);
    map.put("total", m_list.size());
    map.put("totalPage", (int) Math.ceil(m_list.size() / 10.0));
    map.put("list", m_list);
    return map;
  }
  @GetMapping("/movie/no")
  public Map<String, Object> getMovieListByMovieNo(@RequestParam Integer movieNo) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for (MovieInfo m : m_list) {
      if (m.getMovieNo() == movieNo) {
        map.put("list", m);
        map.put("message", "영화정보를 찾았습니다.");
      }
    }
    map.put("message", "영화번호가 잘못되었습니다.");
    return map;
  }
  @PatchMapping("/movie")
  public Map<String, Object> patchMovie(@RequestBody MovieInfo data) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for(MovieInfo m : m_list) {
      if (m.getMovieNo() == data.getMovieNo()) {
        if(data.getTitle() != null) {
          m.setTitle(data.getTitle());
        }
        if(data.getGenre() != null) {
          m.setGenre(data.getGenre());
        }
        if(data.getOpen_dt() != null) {
          m.setOpen_dt(data.getOpen_dt());
        }
        if(data.getStatus() != null) {
          m.setStatus(data.getStatus());
        }
        map.put("message", "영화정보가 수정되었습니다.");
        return map;
      }
    }
    map.put("message", "영화번호가 잘못되었습니다.");
    return map;
  }
  @DeleteMapping("/movie")
  public Map<String, Object> deleteMovie(@RequestParam Integer movieNo) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for (MovieInfo m : m_list) {
      if (m.getMovieNo() == movieNo) {
        m_list.remove(m);
        map.put("message", "영화정보가 삭제되었습니다.");
        return map;
      }
    }
    map.put("message", "영화번호가 잘못되었습니다.");
    return map;
  }
  // http://localhost:8080/api/movie/info/status?value=1
  // http://localhost:8080/api/movie/info/genre?value=애니메이션
  @GetMapping ("/movie/info/{type}")
  public Map<String, Object> getMovieInfoByKeyword(@PathVariable String type, @RequestParam String value) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    if (!type.equals("genre") && !type.equals("status")) {
      map.put("status", false);
      map.put("message", "타입정보가 잘못되었습니다.[genre,status]");
      return map;
    }
    List<MovieInfo> movieList = new ArrayList<MovieInfo>();
    for (MovieInfo m : m_list) {
      if (type.equals("genre") && m.getGenre().contains(value)) {
        movieList.add(m);
      }
      if (type.equals("status") && m.getStatus() == Integer.parseInt(value)) {
        movieList.add(m);
      }
    }
    map.put("list", movieList);
    map.put("total", movieList.size());
    map.put("totalPage", (int) Math.ceil(movieList.size() / 10.0));
    return map;
  }
}

ProductControllerEx

package com.greenart.practice5.api;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.greenart.practice5.data.ProductInfo;

@RestController
@RequestMapping("/api")
public class APIController {
  private static List<ProductInfo> prod_list = new ArrayList<ProductInfo>();
  private static Integer nextNo = 1;

  // http://localhost:8080/api/user/asdqwe
  @GetMapping("/user/{id}")
  public Map<String, Object> getUserInfo(@PathVariable String id) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    map.put("id", id);
    return map;
  }
  @GetMapping("/product/list")
  public Map<String, Object> getProductList() {
    Map<String, Object> map = new LinkedHashMap<String, Object>();

    map.put("status", true);
    map.put("total", prod_list.size());
    map.put("totalPage", (int) Math.ceil(prod_list.size() / 12.0));
    map.put("list", prod_list);
    return map;
  }
  @PutMapping ("/product")
  public Map<String, Object> putProduct(@RequestBody ProductInfo data) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    System.out.println(data);
    data.setNo(nextNo);
    prod_list.add(data);
    nextNo++;
    map.put("status", true);
    map.put("message", "제품이 추가되었습니다.");
    return map;
  }
  // http://localhost:8080/api/product/select_one?prodNo=1
  @GetMapping("/product/select_one")
  public ProductInfo getProductSelectOne(@RequestParam Integer prodNo) {
    for (ProductInfo p : prod_list) {
      if (p.getNo() == prodNo)
        return p;
    }
    return null;
  }
  @PatchMapping("/product")
  public ResponseEntity< Map<String, Object>> patchProduct(@RequestBody ProductInfo data) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for (ProductInfo p : prod_list) {
      if (p.getNo() == data.getNo()) {
        if (data.getName() != null) {
          p.setName(data.getName());
        }
        if (data.getPrice() != null) {
          p.setPrice(data.getPrice());
        }
        if (data.getDiscount() != null) {
          p.setDiscount(data.getDiscount());
        }
        if (data.getReg_dt() != null) {
          p.setReg_dt(data.getReg_dt());
        }
        map.put("status", true);
        map.put("message", "제품 정보가 수정되었습니다.");
        return new ResponseEntity<Map<String, Object>>(map, HttpStatus.ACCEPTED);
      }
    }
    map.put("status", false);
    map.put("message", "제품번호를 확인해주세요.");
    return new ResponseEntity<Map<String, Object>>(map, HttpStatus.BAD_REQUEST);
  }
  @DeleteMapping("/product")
  public Map<String, Object> deleteProduct(@RequestParam Integer prodNo) {
    Map<String, Object> map = new LinkedHashMap<String, Object>();
    for (ProductInfo p : prod_list) {
      if (p.getNo() == prodNo) {
        prod_list.remove(p);
        map.put("status", true);
        map.put("message", "제품정보가 삭제되었습니다.");
        return map;
      }
    }
    map.put("status", false);
    map.put("message", "제품정보가 잘못되었습니다.");
    return map;
  }
}

0개의 댓글