레스토랑을 조회하는 부분이다. 하지만 유저를 조회하는 부분과는 약간의 차이가 있다. 인스타그램과 배달의 민족 앱을 생각해보면 밑으로 내리면 새로운 부분이 계속 나온다. 이렇게 밑으로 내리면서 새로운 가계가 계속 나오게 조회하기 위해 페이징 처리를 해보았다.
레스토랑 조회(Paging 처리)
Model
package com.example.delivery.src.restaurant.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public class GetRestaurantRes {
private int restaurantIdx;
private String name;
private String delivery_category;
private String category;
private int minimumCost;
private int deliveryCost;
private int deliveryTime;
private String location;
private String operatingTime;
private String holiday;
private String explantion;
}
RestaurantController
/***
* 레스토랑 카테고리 별 조회
* paging 처리
* [Get] /restaurants? category=
*/
@ResponseBody
@GetMapping("/deliveryCategory")
public BaseResponse<List<GetRestaurantRes>> getDeliveryCategory(@RequestParam() String delivery_category, int offset){
//Param으로 category와 offset을 받는다.
try{
List<GetRestaurantRes> getRestaurantRes = restaurantProvider.getDeliveryCategory(delivery_category,offset);
return new BaseResponse<>(getRestaurantRes);
} catch (BaseException exception){
return new BaseResponse<>(exception.getStatus());
}
}
Parameter로 카테고리와 offset을 입력 받는다. 즉 몇번째 페이지에 몇개의 정보만 보여 줄 것인지를 계속 파라터로 알려주는 것이다.
RestaurantProvider
public List<GetRestaurantRes> getDeliveryCategory(String delivery_category, int offset) throws BaseException {
try{
List<GetRestaurantRes> getRestaurantRes = restaurantDao.getDeliveryCategory(delivery_category,offset);
return getRestaurantRes;
} catch (Exception exception){
throw new BaseException(BaseResponseStatus.DATABASE_ERROR);
}
}
RestaurantDao
//Limit문을 사용하여 구현
public List<GetRestaurantRes> getDeliveryCategory(String delivery_category, int offset){
String getDeliveryCategoryQuery = "select * from Restaurant where delivery_category = ? order by restaurantIdx LIMIT ?,5;";
Object[] getDeliveryCategoryParam = new Object[]{delivery_category, offset};
return this.jdbcTemplate.query(getDeliveryCategoryQuery,
(rs,rowNum) -> new GetRestaurantRes(
rs.getInt("restaurantIdx"),
rs.getString("name"),
rs.getString("delivery_category"),
rs.getString("category"),
rs.getInt("minimumCost"),
rs.getInt("deliveryCost"),
rs.getInt("deliveryTime"),
rs.getString("location"),
rs.getString("operatingTime"),
rs.getString("holiday"),
rs.getString("explantion")) ,getDeliveryCategoryParam
);
}
리미트 구문을 사용해서 offset의 수만큼 만 정보를 조회하도록 만들었다.
실행결과
정보는 여러개지만 5개만 보여주도록 만들었다.
'혼자하는 프로젝트 > 배달의 민족 클론코딩' 카테고리의 다른 글
레스토랑 관리 - 레스토랑 등록 (0) | 2022.12.19 |
---|---|
유저관리 - 회원정보 변경 및 조회 (0) | 2022.12.19 |
유저관리 - 로그인 (0) | 2022.12.16 |
유저 관리 - 회원 가입 (0) | 2022.12.14 |
유저 관리 - 준비 단계 (0) | 2022.12.14 |