SQL 은 맵 집합 이나 대상 의 동작 을 되 돌려 줍 니 다.
아래 sql 에서 우 리 는 sum 함수 와 count 함 수 를 되 돌려 야 합 니 다.두 개의 되 돌아 오 는 값 은 표 의 필드 가 아니 기 때문에 여기 서 고려 해 야 할 것 은 제 sql 반환 값 유형 이 무엇 입 니까?
일상적인 개발 에서 이런 문제 에 부 딪 히 면 우 리 는 먼저 두 가지 반환 값 유형 을 생각 할 것 이다.하 나 는 totalk 과 num 을 key 로 설정 하여 map 에 밀봉 하 는 것 이다.
다른 하 나 는 대상 을 봉인 하고 토 크 와 num 을 이 대상 으로 설정 한 두 구성원 변수 입 니 다.다음은 이 두 가지 방법 을 사용 하여 층 을 나 누 어 개발 하 는 각 층 에서 의 용법 을 설명 합 니 다.
방법 1:대상 을 반환 값 형식 으로 사용 합 니 다.
1.우선 대상 을 봉인
이 대상 의 num 과 totalk 두 구성원 변 수 를 볼 수 있 습 니 다.바로 우리 sql 문장의 두 개의 반환 값 입 니 다.(totalk 은 sum 함수 의 별명 이 고 num 은 count 함수 의 별명 입 니 다)
2.controller 층
controller 층 에서 이 코드 는 최종 적 으로 위의 sql 문 구 를 사용 하여 데이터 베이스 와 상호작용 을 하 는 것 입 니 다.그의 반환 값 유형 은 RedPackCountBo,즉 우리 가 포장 한 대상 입 니 다.
3.서비스 계층
service 층 의 반환 값 도 이 대상 이 므 로 군말 하지 않 습 니 다.
4.serviceImpl 층
5.mapper.java 층
6.mapper.xml 층(중점)
이 방법 을 사용 하면 totalk 과 Num 을 대상 으로 contrller 층 으로 되 돌 릴 수 있 습 니 다.이 두 값 을 사용 해 야 하 는 곳 에서 대상 의 값 을 직접 사용 하여 얻 으 면 됩 니 다.
여기 서 한 가지 더 말씀 드 리 겠 습 니 다.
sql 구문 에 매개 변 수 를 하나 이상 전달 해 야 할 때@param()주 해 를 사용 하거나 map 집합 에 패키지 하여 map 형식 으로 sql 에 전달 할 수 있 습 니 다.저 는 여기 서 모두 세 개의 인 자 를 전 달 했 습 니 다.map 형식 으로 인 자 를 봉 인 했 기 때문에 sql 문장의 parameter Type 은 자바 util.Map 입 니 다.
방법 2:맵 을 반환 값 형식 으로 사용 합 니 다.
1.controller 층
2.서비스 층
3.serviceImpl 층
4.mapper.java 층
5.mapper.xml 층
이런 방법 을 통 해 수 요 를 실현 할 수 있 지만 저 는 개인 적 으로 한 대상(즉 방법 1)을 봉쇄 하 는 것 이 더 시원 하 다 고 생각 합 니 다.왜냐하면 패키지 맵 은 최종 적 으로 필요 한 데이터 형식 이 다 르 기 때문에 일련의 데이터 형식 전환 을 할 수 있 고 자바.lang.classCastException(유형 변환 이상)이 나타 날 수 있 기 때 문 입 니 다.
제 가 맵 을 반환 값 형식 으로 사용 할 때 데이터베이스 에서 되 돌아 오 는 count 함수 값(즉 num)의 데이터 형식 은 Long 형 이 고 sum 함수(즉 total)의 반환 값 유형 은 BigDecimal 형식(Object 의 getClass()방법 으로 데이터 유형 을 볼 수 있 음)입 니 다.그리고 스스로 유형 변환 을 했 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.