hoo's 개발일지
close
프로필 배경
프로필 로고

hoo's 개발일지

  • 분류 전체보기 (148)
    • 웹(Web) (2)
    • 스프링부트(Spring Boot) (9)
    • 안드로이드(Android) (1)
    • C++ (1)
    • 장고(DJango) (17)
    • 알고리즘(Algorithm) (93)
    • 보안(Security) (5)
    • 파이썬(Python) (2)
    • 네트워크(Network) (1)
    • 취업 준비 (5)
    • algo-with-me (6)
    • 회고 (1)
    • 데이터베이스(DB) (1)
    • 자바(Java) (1)
  • 홈
  • 태그
  • 방명록
Mybatis 동적 쿼리, #{}과 ${}의 차이

Mybatis 동적 쿼리, #{}과 ${}의 차이

mybatis를 사용하면서 검색을 구현하려다가 like쿼리에서 에러(Parameter index out of range)가 발생했다. 일반적으로 mybatis에서 인자로 받은 변수는 #{변수명}과 같이 사용한다. 이때 저 변수명은 "문자열"로 출력된다. 만약 문자열이 아니라 안의 글자 값 자체를 그대로 사용하고 싶다면 #대신 $를 사용하면 된다. LIKE "%#{param}%" // 오류 발생 LIKE "%${param}%" LIKE CONCAT('%',#{search},'%') ?(preparedStatement) 부분에 인자로 들어온 문자열이 들어간다. 문자열 안에 문자열을 넣어버려서 에러가 발생했다. 검색 그 자체가 바로 들어가는 것을 볼 수 있다. $를 사용할 경우 SQL Injection 공격을..

  • format_list_bulleted 스프링부트(Spring Boot)
  • · 2024. 2. 4.
  • textsms

bindingResult 가 무엇일까? (feat. Valid)

스프링 부트를 이용해 api를 구현하다보면, 입력값을 받아야 하는 경우가 존재한다. 사용자에게서 데이터를 받아 저장할 일이 반드시 생기기 때문이다. 이 때 사용자가 어떤 데이터를 마음대로 커스텀해서 보낼지 모르기 때문에 반드시 데이터 검증을 해야한다. 스프링부트에서는 검증을 빠르게 해주는 validation이 있다. 단, 2.3이상부터는 따로 분리되었기 때문에 반드시 의존성을 따로 추가해 주어야 한다. implementation 'org.springframework.boot:spring-boot-starter-validation' gradle 내가 정의한 Dto에 @Null과 같은 validation annotation을 붙이고 컨트롤러 인자에 @Valid(자바에서 지원) 혹은 @Validated(스프링..

  • format_list_bulleted 스프링부트(Spring Boot)
  • · 2024. 2. 1.
  • textsms

logger를 사용할 때 static을 붙이고 안붙이고 차이가 무엇일까?

스프링부트를 사용하면서 로그를 찍기위해 서비스에 아래와 같은 로그를 초기화하여 사용하고 있었다. 그런데 사수님께서 static 안붙인 이유가 있는지, static 붙이고 안붙이고의 차이가 무엇인지 물어보셨다. static은 메모리에서 저장되는 위치가 힙 영역이 아니라 데이터 영역(전역변수, static 변수)에 저장되어 여러 클래스 객체를 생성하더라도 하나만 공유한다고 알고 있었다. 그런데 스프링은 빈에 인스턴스를 등록해 싱글톤으로 관리되는데 굳이 static으로 할 필요가 있나? 라는 생각을 갖고 열심히 인터넷을 뒤적거려봤다. 참고에 뒤적거린 사이트들을 적어두었다. static을 사용하면 생기는 장점 1. 잘 알려진 관용구이다. (이게 왜 장점이지?) 2. CPU, Memory 오버헤드가 적다. log..

  • format_list_bulleted 스프링부트(Spring Boot)
  • · 2024. 1. 31.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
전체 카테고리
  • 분류 전체보기 (148)
    • 웹(Web) (2)
    • 스프링부트(Spring Boot) (9)
    • 안드로이드(Android) (1)
    • C++ (1)
    • 장고(DJango) (17)
    • 알고리즘(Algorithm) (93)
    • 보안(Security) (5)
    • 파이썬(Python) (2)
    • 네트워크(Network) (1)
    • 취업 준비 (5)
    • algo-with-me (6)
    • 회고 (1)
    • 데이터베이스(DB) (1)
    • 자바(Java) (1)
최근 글
인기 글
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바