TIL - 20250722

juni·2025년 7월 22일

TIL

목록 보기
71/316

0722 Spring Boot 파일 업로드 & SQL 정리


📁 파일 업로드 기능 (Spring Boot)

✅ 단일 파일 업로드

  • 사용자가 업로드한 파일을 MultipartFile로 받아 처리
  • UUID를 활용해 파일명 중복 방지
  • 업로드된 파일은 설정한 루트 디렉토리에 저장
@PostMapping("/uploads")
public ResponseEntity<?> uploadSingleFile(@RequestParam("profile") MultipartFile originFile) {
    String fileName = UUID.randomUUID().toString() + 확장자;
    originFile.transferTo(저장경로);
    return ResponseEntity.ok("OK!!");
}

✅ 다중 파일 업로드

  • 여러 개의 파일을 리스트 형태로 받아 반복 저장
@PostMapping("/uploads-multi")
public ResponseEntity<?> uploadMultipleFile(@RequestParam("profiles") List<MultipartFile> originFiles) {
    for (MultipartFile file : originFiles) {
        file.transferTo(저장경로);
    }
    return ResponseEntity.ok("OK!!");
}

✅ 파일 접근 경로 설정

  • WebMvcConfigureraddResourceHandlers()를 오버라이드하여 외부 경로의 파일에 접근 허용
registry.addResourceHandler("/uploads/**")
        .addResourceLocations("file:" + fileUploadConfig.getLocation());

📘 SQL 함수 복습

✅ 문자열 함수

함수설명
UPPER(column)대문자로 변환
LOWER(column)소문자로 변환
INITCAP(column)각 단어 첫 글자 대문자
LENGTH(column)문자열 길이
INSTR(column, '문자')특정 문자의 위치
SUBSTR(column, 시작, 길이)문자열 추출
CONCAT(a, b)문자열 연결
REPLACE(column, '기존', '변경')문자열 변경
LPAD(column, 길이, '문자')왼쪽 채움
RPAD(column, 길이, '문자')오른쪽 채움

✅ 수학 함수

함수설명
ROUND(숫자)반올림
TRUNC(숫자)버림
CEIL(숫자)올림
FLOOR(숫자)내림
MOD(a, b)나머지 (짝/홀수 구분 가능)

✅ 날짜 함수

함수설명
SYSDATE현재 시스템 시간
TO_CHAR(date, '형식')날짜를 문자열로 변환
TO_DATE('문자열', '형식')문자열을 날짜로 변환
  • 예: TO_CHAR(registration_date, 'YYYY-MM-DD')

✅ NULL 처리 함수

함수설명
NVL(a, b)a가 NULL이면 b 반환
NVL2(a, b, c)a가 NULL이 아니면 b, NULL이면 c 반환
NULLIF(a, b)a와 b가 같으면 NULL 반환, 다르면 a 반환
COALESCE(a, b, c...)가장 먼저 NULL이 아닌 값 반환

✅ 조건 함수: CASE

CASE
  WHEN 조건 THEN 결과
  WHEN 조건 THEN 결과
  ELSE 기본값
END
  • 가입 연도에 따른 유저 등급 나누기 예시:
CASE
  WHEN 등록년도 >= 2023 THEN '새싹 유저'
  WHEN 등록년도 >= 2021 THEN '기존 유저'
  ELSE '고인물 유저'
END

✅ 연습 문제 예시 요약

  1. TO_CHAR로 날짜 포맷 바꾸기
    '2023년 01월 01일 (일요일)' 형태로 변환

  2. NVL로 NULL 대체
    manager_id가 NULL이면 '최상위 관리자' 출력

  3. CASE로 활동 상태 구분
    최근 로그인 날짜 기준으로 '최근 활동 유저' 또는 '휴면 유저'

  4. MOD + CASE로 댓글 구분
    짝수 comment_id -> '짝수 댓글', 홀수 -> '홀수 댓글'


🧠 요약

  • Spring Boot에서는 MultipartFile로 파일을 업로드 받고 UUID로 이름 중복 방지
  • SQL의 다양한 함수들을 활용하면 문자열, 숫자, 날짜, NULL 처리, 조건 구문을 정교하게 다룰 수 있음
  • CASE문은 조건별로 다른 값을 표현할 때 유용함

0개의 댓글