학원프로젝트/MrPizzaHut

제네릭+optional을 이용하다

디비드킴 2021. 11. 22. 13:05

학원 프로젝트가 막바지에 도달했다

좋은 건지 나쁜 건지 모르겠지만

종이 한 장 차이정 도로 내가 조금 더 잘해서 

장바구니/결제시스템/관리자 페이지 대부분을 맡았다

시간이 없는 관계로 매우 기능 위주로 백엔드에 집중해 구현 중이다

다른 팀원들도 도와줘야 해서 dto사용은 물론 본의 아니게 하드코딩 그 자체를 하고 있다...

 

mybatis를 사용하는 데 사용할 때마다 jpa와 달리 optional로 받을 수없었다

그래서 생각한 게 optional을 결과 위에 씌어줘야 한다고 생각했다 다행히 잘 작동했다

예제 코드

Map<String, Object>map=Optional.ofNullable(buketDao.findByBid(bid)).orElseThrow(()->utillService.makeRuntimeEX("존재하지 않는 장바구니 품목입니다", "changeCount"));

문제는 이런 코드였다

List<Map<String, Object>>orders=getOrders(keyword, page,email,productName);

db에서 여러 개 가지고 왔을 때 list로 받는다면 null로 주지 않고 빈 배열로 주는 것이었다

 

그래서 고민에 빠졌다

List<map<string, object>>/List<integer>/List<string>든 모두 비어있는지 검사할 수 없을까? 한 번에??

 

그래서 제네릭을 살펴보았다

예전에 제네릭을 보고 충격을 받았던 적이 있다 

언젠간 저건 엄청 유용하게 쓸 수있을거라는 생각을 했다

그리고 드디어 꺼내서 사용해 보자 라는 생각을 했고 만들었다

놀랍게도 어떤 형식이든 null검사가 가능했고

어떤 형식을 담고 있는 list이던 비워있는지 검사가 가능했다

 

간단하지만 

한 단계 더 성장한 기분이다