본문 바로가기

구디 아카데미 수료 과정/HTML

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님/클라우드 활용 자바개발자 양성과정/•36일차/12.11

 

MyBatis Dynamic Query

쿼리에 연산을 넣어서 쿼리를 확장하는 방법

 

1) insert 문에서만 동작

  <selectKey> : 전달받은(parameter Type)의 <seleckKey>를 통해서 객체에 값을 입력하여 사용

                          order ="before/after" 메인 쿼리가 실행되기 전 후에 실행을 제어함

                          입력시 필요한 ID, SEQ를 외부에 전달할 때 사용

 

2) Binding 

 #, $ 두종류가 있음

# =  값을 ' 값 '

$ = 값을 값

#=값을, $ = 컬럼이나 Alias를 쓸때 사용함

 

하지만 얘네는 SQL Injection의 공격대상이 돼서  가능하면 쓰지 말아야함 

 

 

                        SQL Injection공격이란? (OWASP) 참고 

 

 

 

 -> $바인딩을 해야 column을 제대로 인식함

 

 

 

 

#binding을 해서  파라미터가 '1' or '1' = '1' 이 돼야하지만 그러지 않았음

$binding을 한 후에  "'1' or '1' = '1'"로 바꾸면 정상 작동함

 

 

Like문 작성시 mapper XML을 확인해야함 

 -> Val을 키값으로 하는 "AD"를  Like문에 넣는거임   그래서 LIKE 는  '%$바인딩%'

 

만약 # 으로 바꾸면 인식하지 못함

 

 

#바인딩을 하고 싶으면   '%' || #{val} 해야함


IF문으로 여러개 쿼리 하나로 줄이기

 

job_id가 null이 아니면  where JOB_ID = job_id를 실행해


Iterator를 통해서 쿼리문의 In 절 생성 

-> (값, 값, 값,...) 마지막 값은 , 안찍고 )로 닫기

 

 

 


choose문을 사용한 선택 쿼리

 

 

 


Trim

 

prefix = 앞에 붙여줌

prefixOverrides =  조건문이 성립하면   삭제할 문자 (여기선 AND)


Set

 

-> set 은 자동으로 오버라이드해서 , 를 삭제해줌


set의 tag를 trim으로 변경하여 처리

-> prefix로 SET을 으로 시작/   suffixOverrides로  마지막  쉼표 제거 

 

 

마지막 Trim~Set 하면 카멜표기법에대해 말해주셨었는데.. .잘기억이안남.. 그래서 #{jobTitle} 일케 한건디.... 왜..였지... 

 

 

 

소감 : ㅇ ㅣ번주 한 주도 화이팅....

 

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님