@RestController
public class SubscribeApiController {
@PostMapping("/api/subscribe/{toUserId}")
public ResponseEntity<?> subscribe(@AuthenticationPrincipal PrincipalDetails principalDetails , @PathVariable int id ){
return null;
}
@DeleteMapping("/api/subscribe/{toUserId}")
public ResponseEntity<?> unsubscribe(@AuthenticationPrincipal PrincipalDetails principalDetails , @PathVariable int id ){
return null;
}
}
import com.pyo.yourspick.domain.subscribe.SubscribeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@RequiredArgsConstructor
@Service
public class SubscribeService {
private final SubscribeRepository subscribeRepository;
@Transactional
public int 구독하기(int fromUserId , int toUserId){
int result = subscribeRepository.mSubscribe(fromUserId , toUserId);
return result;
}
@Transactional
public int 구독취소하기(int fromUserId , int toUserId){
int result = subscribeRepository.mUnSubscribe(fromUserId, toUserId);
return result;
}
}
기본적인 틀 만들어주고
public interface SubscribeRepository extends JpaRepository<Subscribe , Integer> {
@Modifying
@Query(value = "INSERT INTO subscribe(fromUserId ,toUserId,createDate) VALUES( :fromUserId, :toUserId, now())", nativeQuery = true)
int mSubscribe(@Param("fromUserId") int fromUserId, @Param("toUserId")int toUserId);
@Modifying
@Query(value = "DELETE FROM subscribe WHERE fromUserId = :fromUserId AND toUserId = :toUserId" , nativeQuery = true)
int mUnSubscribe(@Param("fromUserId") int fromUserId, @Param("toUserId") int toUserId);
}
@Modifying 과 쿼리 뒤에 nativeQuery = true 붙이는걸 잊지말자.
JDBC랑 비슷하다고 보면 된다. 쿼리문을 보면 : 이 있는데 이게 JDBC의 ? 역할을 한다. 매개변수를 바인딩해서 넣어준다.
@Param은 java-8 버전부터 붙여줘야한다고 한다. 문법이다
그리고 우리가 작성시간 넣을때 createDate 를 사용했었는데 이건 네이티브 쿼리라 직접 넣어줘야한다.
'Spring > JPA + Security' 카테고리의 다른 글
[Spring Data JPA] JPA를 사용한 이미지 업로드 (0) | 2023.01.08 |
---|---|
[Spring Data JPA] JPA를 사용한 구독하기 3 - 구독하기 로직 구현하기 (0) | 2023.01.08 |
[Spring Data JPA] JPA 사용한 구독하기 1 - DB테이블 설정 (0) | 2023.01.08 |
[Spring] 회원 수정 에서 유효성 처리 하기 -2 DB에 없는 값 (0) | 2023.01.08 |
[Spring] 회원 수정 에서 유효성 처리하기 - 2 Exception Handler 적용 (0) | 2023.01.07 |
댓글