본문 바로가기

개발중/Spring

mysql / my batis 여러개 업데이트

728x90
반응형

 


지금 내가 풀어나가야 할 문제는

아래와 같이 드래그 박스가 존재한다.

위에서 아래로 하나의 속성씩 정렬이 되어있고

ㄱ, ㄴ, ㄷ / 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

하고자 하는 결과물은 같은데 엄청난 차이가 나는 코드다.

내 부족함을 너무 느끼는 하루다. 🤣

얼마나 발전 가능성이 많은건지,, 언제까지 발전 가능성만 많을꺼니 ?

발전은 언제할꺼니 ? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 😅😅😅


728x90
반응형

'개발중 > 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