[Playground] Spring 목록 API 필터 적용(feat. 쿼리스트링)

Daeya·6일 전

Playground

목록 보기
2/7

API 엔드포인트에 쿼리스트링 붙이고 필터링

GET /api/memos?status=ING

1. DBeaver에서 쿼리 확인

SELECT ID      as 'id'
     , TITLE   as 'title'
     , CONTENT as 'content'
     , STATUS  as 'status'
	FROM MEMO
    WHERE DEL_YN = 'N'
    AND STATUS = 'ING'

2. Mapper.xml에 Mybatis 등록

기존 SELECT문에 WHERE 절에 하단 코드 추가

<if test="status != null and status != ''">
  	AND STATUS = #{status}
</if>

3. Mapper.java에 Param 받기

List<MemoVO> selectMemoList(MemoVO Param);

4. Service에 필터 넣을 param 추가

public List<MemoVO> selectMemoList(String status) {
	MemoVO param = new MemoVO();
    param.setStatus(status);
    return memoMapper.selectMemoList(param);
}
  • Controller의 String status를 MyBatis가 읽을 수 있게 MemoVO에 담아서 Mapper로 전달

5. Controller에 @RequestParam 추가

public List<MemoVO> list(@RequestParam(required = false) String status) {
    return memoService.selectMemoList(status);
}

6. PostMan으로 확인

GET http://localhost:8080/playground/api/memos?status=ING

정리

기능

GET /api/memos?status=ING → ING 상태만 반환

흐름 (요청 → DB)

Controller: @RequestParam status
→ Service: param.setStatus(status)
→ Mapper: selectMemoList(param)
→ XML: status 있으면 AND STATUS = #{status}
→ DB

만든 순서 (DB → 요청)

  1. DBeaver : WHERE STATUS = 'ING'
  2. Mapper.xml : <if test="status != null and status != ''">
  3. Mapper.java : selectMemoList(MemoVO param)
  4. Service : param.setStatus(status)
  5. Controller : @RequestParam(required = false)
  6. Postman : GET .../api/memos?status=ING

참고

profile
Daeya

0개의 댓글