주문 CRUD Spring Boot 프로젝트를 만들어 다음을 진행해보자.
Redis 설정하기
spring:
data:
redis:
port: 6379
host: localhost
username: 설정한 redis user 이름
password: 설정한 redis 비밀번호
package com.redis.practice;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@RedisHash("order")
public class ItemOrder {
@Id
private String id;
private String item;
private Integer count;
private Long totalPrice;
private String status;
}
package com.redis.practice;
import org.springframework.data.repository.CrudRepository;
public interface OrderRepository extends CrudRepository<ItemOrder, String> {
}
package com.redis.practice;
import lombok.Getter;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/orders")
public class OrderController {
private final OrderRepository orderRepository;
public OrderController(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}
@PostMapping
public ItemOrder create (@RequestBody ItemOrder order) {
return orderRepository.save(order);
}
@GetMapping
public List<ItemOrder> getAll() {
List<ItemOrder> orders = new ArrayList<>();
orderRepository.findAll().forEach(orders::add);
return orders;
}
@GetMapping("/{id}")
public ItemOrder getOne(@PathVariable("id") String id) {
return orderRepository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
}
@PutMapping("/{id}")
public ItemOrder update(@PathVariable("id") String id, @RequestBody ItemOrder order) {
ItemOrder target = orderRepository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
target.setItem(order.getItem());
target.setCount(order.getCount());
target.setTotalPrice(order.getTotalPrice());
target.setStatus(order.getStatus());
return orderRepository.save(target);
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable("id") String id) {
orderRepository.deleteById(id);
}
}
[POST] http://localhost:8080/orders
