일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OIDC
- UnsupportedOperationException
- Ingress Controller Fake
- pinpoint 2.5.3
- 플루터
- 노드간 통신
- 오블완
- 월급루팡 일지
- nGinder
- Armeria
- jsonMarshaller
- reids
- save/update
- 논블록킹 성능
- pinpoint
- 애자일 싫타
- RedirectService
- 티스토리챌린지
- jar 배포
- formik
- ㅉ때
- hbase 저장공간 설정
- 개발 어렵당.ㅠ
- intellij
- fake jwt
- 7879
- LPOS
- Loki 로그
- R2DBC Paging
- 핀포인트
- Today
- Total
대머리개발자
R2DBC Native 쿼리에 날짜 컬럼 바인딩. 본문
R2DBC는 여전히
너무 단순한 형태의 API만 제공하기 때문에 페이징 처리를 위해서는
네이티브로 작성해야 한다.
@Query( """
SELECT id, action, amount, regDt
FROM Product
WHERE userId =:userId
ORDER BY regDt ASC
LIMIT :pageIndex, :pageSize
"""
)
fun searchPointByUserId(userId: String, pageIndex: Int, pageSize: Int) : Flux<ProductListDto>
⭐⭐ 객체를 인자로 받아서 깔끔하게 바인딩 해볼라고 했더니...역시나. ㅋ
뭐 일단 낱개로 넘겨서 진행했는데..
날짜 바인딩을 제대로 안 된다.
1. DTO 클래스의 날짜 변수를 String 으로 변경해보고
data class ProductListDto(
var id: Long=0,
var action: Action=Action.SPEND,
var amount: Int=1,
var regDt: String = "" // LocalDateTime 도 안 된다.
)
2. 쿼리에서도 DATE_FORMAT을 이용해서 문자열로 변경해보고
@Query( """
SELECT id, action, amount, DATE_FORMAT(regDt, '%Y-%m-%d %H:%i:%s') as regDt
FROM Product
...
안 된다.ㅋ
물론 단순 엔티티(entity)로 다 받으면 되나 깔끔하게 필요한 값만 취하기 위함이다!
주고 받는 데이터가 경량화 되면 모든것이 베스트!!닷
1. 더 쾌적한 환경(속도)을 제공
2. 모든것이 경비가되는 클라우드 세상에서..돈을 절약s? 회사 돈은 나만 생각한다 ㅋ
바인딩이 안 되는 설계는 사실상 오류 인듯 한데 이것을 try 한 부분은 이해가 할 수 없었다.
오류가 발생하고 해당 오류 메세지를 통해서 접근했다면 좀 더 수월하게 이슈를 잡지 않았을까 한다. ㅎ
답은 일단 인터페이스로 DTO를 만들어야 한다.
interface ProductListDto{
fun getId():Long
fun getAction():String
fun getAmount():Int
fun getRegDt():LocalDateTime
}
안 될라면 다 안되지...LocalDateTime만 안 되서 반나절 슝슝!
해당 인터페이스 그대로 SAVE할 때 이용하고자 했는데 바인딩 실패가 발생한다.
failed to parse a JSON document: com.fasterxml.jackson.databind.exc.InvalidDefinitionExceptio
DB 조회 결과를 바인딩 할때만 사용 가능한듯하다.
Form에서의 바인딩은 DTO를 사용해야 한다... 결국 두 개의 구조체를 이중으로..관리....캬..떱.
리스트용 객체를 하나 더 만든것이 여간 찝찝할 수 없다. ㅠ
5월 22일 추가..
@Column("regDt")
var regDt: LocalDateTime? = null,
어노테이션(@) 으로 바인딩되는 컬럼명을 명시 해줘도 된다! 오케바뤼
실상 인터페이스로 한 경우도 명시를 해줬기 때문에 된 부분인 것이다..아하!!
'개발이야기 > DataBase' 카테고리의 다른 글
R2DBC 객체 등록/수정 고민 (0) | 2024.05.29 |
---|---|
R2DBC 한 방 쿼리 고민s -> 안 된다! (0) | 2024.05.21 |
게시판 본문 컬럼 분리에 대한 고민 (0) | 2024.03.11 |
json vs 확장속성 (0) | 2024.03.08 |
DB 꽃은 튜닝이지! (0) | 2024.03.07 |