결론
where 의 컬럼이 PK 또는 unique 한 값 (id, goodsId, no 등 값이 하나) 일 때 findOne 을 써도된다.
여러개 나와도 상위 1개 limit 1 을 얻고 싶은 경우에는 findTop1 을 써야 한다.
과정
내가 원하는 값은 상품번호로 조회하고 order by goodsId desc 로 정렬하여 상위 1개의 데이터를 뽑고싶었다.
1. findOne을 사용할 경우 돌아가는 쿼리
Repository.findOneByOrderByGoodsIdDesc();
select *
from
stock.shop_product
order by
goods_no desc
;
쿼리문을 컴파일해본 결과 limit 조건절이 생기지 않았다.
2. findTop1 을 사용할 경우 돌아가는 쿼리
Repository.findTop1ByOrderByGoodsIdDesc();
select *
from
stock.shop_product
order by
goods_no desc limit 1;
내가 원하는 대로 나왔다.
여기서 Top100 , Top1000 등 내가 원하는 limit 값을 설정할 수 있다.
'개발 > JAVA' 카테고리의 다른 글
[java] 어댑터 패턴 (Adapter Pattern) (0) | 2023.11.17 |
---|---|
[Mybatis] SQL에서 WHERE 절 안에 in 처리하기 (0) | 2023.11.14 |
[Java] List를 map(배열같은key/value) 로 만들기 (0) | 2023.08.30 |