지금 내가 풀어나가야 할 문제는
아래와 같이 드래그 박스가 존재한다.
위에서 아래로 하나의 속성씩 정렬이 되어있고
ㄱ, ㄴ, ㄷ / A, B, C 순서가 아닌
각 속성들은 정렬 값을 가지고 있다.
하나의 속성이 이동을 했을 때 비동기적으로 정렬 값을 업데이트을 해줘야 한다 🤣
예를들어, 아래 상태에서
1. 프링글스
2. 비스켓
3. 초콜릿
[
{ 속성PK : 10, 속성명 : "프링글스" , 속성정렬번호: 1},
{ 속성PK : 20, 속성명 : "비스켓" , 속성정렬번호: 2},
{ 속성PK : 30, 속성명 : "초콜릿" , 속성정렬번호: 3},
]
프링글스가 초콜릿 아래로 이동 된다면
1. 비스켓
2. 초콜릿
3. 프링글스
[
{ 속성PK : 30, 속성명 : "초콜릿" , 속성정렬번호: 2},
{ 속성PK : 20, 속성명 : "비스켓" , 속성정렬번호: 1},
{ 속성PK : 10, 속성명 : "프링글스" , 속성정렬번호: 3},
]
세개의 속성의 정렬 값을 업데이트 해줘야 한다.
빈수 아이디어
그래서 처음 내가 생각한 방법은 한 속성이 하나의 vo 이니까
LIST<vo> 를 받아서 @Service 단에서 하나씩 던지는 것이다.
근데 이렇게 했을 떄 단점이 용량이 너무 크다는 것이다.
vo 에 들어있는 속성수는 다양하고,
내가 사용할 속성은 단 두개다.
1. 속성의 p,k
2. 속성의 정렬값
주완선배 아이디어
value 에는 각 속성의 pk 가 들어있다.
드래그 순서대로 그냥 pk 를 정렬 시켜 문자열로 보내주면
ex ) 53,64,75
첫번째 속성 pk : 53
두번째 속성 pk : 64
세번째 속성 pk : 75
ROWNUM 값으로 속성의 정렬값을 업데이트 시킨다.
UPDATE 테이블이름 T1,
( SELECT T1.*
FROM ( SELECT @rownum:=@rownum+1 AS row_num
, T1.속성PK
FROM 테이블이름 T1
, (SELECT @rownum:=0) T2
WHERE 속성PK IN ( ${value} )
ORDER BY FIELD( 속성PK, ${value} )
) T1
) T2
SET T1.속성정렬값 = T2.row_num
WHERE T1.속성PK = T2.속성PK
하고자 하는 결과물은 같은데 엄청난 차이가 나는 코드다.
내 부족함을 너무 느끼는 하루다. 🤣
얼마나 발전 가능성이 많은건지,, 언제까지 발전 가능성만 많을꺼니 ?
발전은 언제할꺼니 ? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 😅😅😅
'개발중 > Spring' 카테고리의 다른 글
쿼리 생성 API 고민하기. (0) | 2021.05.21 |
---|---|
@RestController - @Api 에서 데이터 받는 법 (0) | 2021.05.18 |
DB 여러계정 연동 (0) | 2021.04.28 |
Demon 이란 (0) | 2021.02.19 |
Data → Excel 변환 (0) | 2021.02.15 |