티스토리 뷰

반응형

기본적으로 JPA에서 Insert, Update, Delete 기능을 하는 Native query를 쓸때는 아래와 같이 작성한다.

@Repository
public interface TestRepository extends JpaRepository<TestEntity, String>{

@Modifying
@Transactional
@Query(value="INSERT INTO sample VALUES(username = :username,useremail = :useremail)".nativeQuery=true)
public int insertQuery(@Param("username") username, @Param("useremail") useremail);

}

JpaRepository에 들어있는 TestEntity 에는 username과 usermail이 @Column 으로 작성되어있다.

지금은 단순히 2개의 파라미터만 넘겨서 위에처럼 query문을 작성했지만,

만약 내가 넘기고 싶은 파라미터가 10개라면? @Param을..10개를 다 적어야하나?.. 라는 생각에 찾아본 방법이다.

@Repository
public interface TestRepository extends JpaRepository<TestEntity, String>{

@Modifying
@Transactional
@Query(value="INSERT INTO sample VALUES(:#{#paramDetail.username},:#{#paramDetail.useremail})".nativeQuery=true)
public int insertQuery(@Param("paramDetail") TestEntity testEntity);

}

먼저, 처음 코드와 달라진 부분은 insertQuery 함수에 Column이 아니고, Entity 자체를 파라미터로 준것이다.

그리고 @Query쪽에 쓴 query문이 바뀐것을 볼 수가 있다.

나는 저 방법을 찾느라 시간이 오래 걸렸다ㅠㅠ

:#{#Param명.컬럼명} 이렇게 넘기면 된다.

그럼 엔티티 안에 있는 파라미터가 복합키라면?'

그때도 크게 다르지 않다.

:#{#Param명.복합키명.컬럼명} 이렇게 넘기면 된다.

반응형

'JAVA, Kotlin' 카테고리의 다른 글

@Resource, @Autowired, @Inject 차이  (0) 2021.11.01
람다 Lambda 란?  (0) 2021.06.23
컴파일러 vs 인터프리터  (0) 2021.03.04
== 와 equals 차이?  (0) 2021.03.03
Mock / Mockito 란?  (2) 2020.01.15
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함