티스토리 뷰
반응형
기본적으로 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 |
댓글