JPA 사용자 정의 sql
- @Query 어노테이션을 이용하여 정의
- 테이블 명은 Entity 클래스 이름과 일치시켜야함
select 문
- 주의할 점은 테이블 명으로 Entity가 될 클래스 명을 그대로 써줘야함.
예를들어) OrderVO라는 이름을 같은 클래스를 Entity로 만들 때 OrderVO를 그대로 사용
(select * from OrderVO)
@Query("쿼리문")
public 타입 '쿼리문을 실행 할 함수명()';
@Query("select nvl(max(orderid),0) +1 from Orders")
public int getNextNo();
insert, delete, update 문
- select 문과 다르게 table 명 입력 시 실제 클래스 명이 아닌 실제
@Modifying
@Query("쿼리문")
@Transactional
public "타입" "쿼리문을 실행 할 함수명"(@param("파라미터") "타입" "파라미터명");
public interface OrdersDAO extends JpaRepository<OrdersVO, Integer>{
@Query(value="select nvl(max(orderid),0) +1 from OrdersVO")
public int getNextNo();
@Modifying
@Query (value="insert into orders "
+ "o(o.orderid, o.custid, o.bookid, o.saleprice, o.orderdate) "
+ "values(:#{#o.orderid},:#{#o.customer.custid}"
+ ",:#{#o.book.bookid},:#{#o.saleprice},sysdate)"
, nativeQuery = true)
@Transactional
public void insert(@Param("o") OrdersVO o);
}
:#{#order.customer.custid}
- customer 테이블에 있는 custid라는 속성명을 가져와서 order의 custid의 값으로 사용하는 의미 (조인, join)
반응형
'개발 > 스프링(Spring)' 카테고리의 다른 글
(스프링) 게시판 전체 선택 후 삭제 (이전 페이지로 이동) (0) | 2022.08.17 |
---|---|
(JPA) 복합 키 설정하기 (0) | 2022.06.30 |
JPA 관계 맵핑 (0) | 2022.06.27 |
Spring Data JPA (0) | 2022.06.26 |
(Spring) 한글 처리 - filter 이용 (0) | 2022.06.11 |
댓글