Paper.Yellow

시작 전 조율용 프로젝트 - minishop 본문

프로젝트/파이널 프로젝트

시작 전 조율용 프로젝트 - minishop

Paper.Y 2022. 11. 17. 14:25
 

GitHub - paperyellow/minishop

Contribute to paperyellow/minishop development by creating an account on GitHub.

github.com

 

초안

Product 판매 제품, 가격, 재고 

Orders 제품id, 주문수량, 주문번호 

Payment 주문번호, 총 주문 갯수, 주문 금액 [Orders 내용]

 

CRUD

삭제는 따로 없이 boolean으로 [재고있음/재고없음, 주문/주문취소]로 구별

Product - Select, Update, Insert

Orders - Update, Insert

Payment - Select, Update, Insert

 

 

 

11/15

기초 세팅

-엔티티, DAO, xml 파일 세팅

+ product xml 완료 (#1)

 

오류 1) xml 파일 주소 오류로 서버 실행 실패

 

 

11/17

주문하기, 주문취소하기 완료 (#2)

 

오류 2) 포스트맨 테스트시 오류

Service

 

ProductController

@RequiredArgsConstructor
@Controller
public class ProductController {

    private final ProductService productService;

    @GetMapping("/product")
    public CMRespDto<?> list(Model model) {
        List<Product> productList = productService.상품목록보기();
        model.addAttribute("productList", productList);
        return new CMRespDto<>(1, "목록보기성공", productList);
    }
}

원인1)

 

어노테이션 미스

 

원인2)

 

Entity 어노테이션 누락

 

GET - 상품목록보기 성공 

 

오류 3) Post 오류 

새로운 값에 대한 반환이 되지 않고 1번 id로 반환되어 돌아옴

 

디버그 방법 ==========================

 

출력문 넣어 볼 곳 - ProductController / ProductService 1~4

 

ProductController
 

 

ProductService

 

 

 

ToString 어노테이션 달아서 확인하기  - Product / ProductReqDto

출력값

 

2번에서 productId가 null값이 나와서 전달 받은 값이 없어서 추가된 데이터가 출력되지 않았음. 수정 필요 11/18

 

h2데이터베이스 사용하는데 sql 자동 실행 설정을 못해서 코드 수정해서 서버 재실행할때마다 웹서버에서 계속 값을 수동으로 넣어줘야해서 불편했음. 

=> 자동 실행 포스팅 해둠. 

 

스프링부트 h2 데이터베이스 sql 자동 실행

schema.sql 테이블 파일 drop table product; drop table orders; drop table payment; create table product( soldout BOOLEAN, product_id int primary KEY AUTO_INCREMENT, name VARCHAR(24) NOT null, price INT NOT null, stock INT NOT null ); create table order

paper-y.tistory.com

 

수정1) Product.java 수정  - 11/21

 

 

수정2-1) ProductService 코드 수정

	public ProductInsertRespDto insert(ProductInsertReqDto productInsertReqDto) {
        productDao.insert(productInsertReqDto.toEntity());
        ProductInsertRespDto productInsertRespDto = productDao.insertProductResult(productInsertReqDto.getName());
        return productInsertRespDto;
    }

 

수정2-2) sql 변경

	<select id="insertProductResult" resultType="~web.dto.ProductRespDto$ProductInsertRespDto">
		select *
		from (SELECT *
		FROM product 
		WHERE Name = #{productName}
		order by product_id desc)
		fetch first rows only
	</select>

 

fetch가 order by보다 빨리 실행되기 때문에 ()로 묶음. 

productName은 primary KEY가 아니기 때문에 모든 내용을 select 한 후 desc로 최신순으로 정렬 > fetch로 젤 위에 내용을 가져옴. 

 

최종 완료 )

완료!!!!

 

 

 

 


 

조율사항

 

1. DTO명

ㅁRequest/Response :

      ㄴ엔티티 + Req/Resp + Dto
ㅁ내부 클래스
      ㄴ엔티티 + 동사 + 목적어 + Req/Resp +Dto

 


2. 테이블

id 변수명 그냥 하지말고 엔티티 명 붙여서 만들기 ex) id => productId


3. 메서드 앞 동사 이름 통일

insert / update / find

'프로젝트 > 파이널 프로젝트' 카테고리의 다른 글

회원가입  (0) 2022.12.13
더미데이터 생성  (0) 2022.12.06
Email 인증 기능 구현  (0) 2022.11.27