본문 바로가기
코딩

2022.03.23_31일차_spring(06)

by 흥뷰자 2022. 3. 24.

31일차 학습내용

요청에서 유효성 검사하기
db에 있는 자료 가져오기 - 어제 반복
동적SQL문: 
- if
- choose, when, otherwise
- trim + prefix, prefixOverride, suffixOverrides 속성
- foreach
- selectKey
- select + like

 


요청을 통한 유효성 검증 키워드 param

param넘어올 때 (요청 들어오는 때) 매핑에 제약을 걸어두기

제약을 걸어두지 않은 것은 요청들어갈 때 유무여부가 상관없다.

조건에 맞지 않는 요청이 들어오면 400번대 상태 출력

이번에는 매개변수 앞에 붙는 RequestParam에 포함되는 속성

속성 추가

값이 넘어오지 않은 경우 defaultValue지정

 

매개변수 앞에 꼭 있어야 한다는 제약 거는 것도 있음 required=true 

 

 

필수기입요소 여러번 검사 자바스크립트로 체크

자바에서 체크

또 디비에서 체크

 

DTO로 담을 때도 유효성검증하는경우도 있음 밸리드....

개별 변수에 어노테이션을 적용해서~~ 

 


db에 있는 자료 가져오기

파일 순서 

.xml파일 쿼리문 만들기

.java 추상메서드interface 만들기

.java 컨트롤러에서 보여줄 페이지로 맞는지 체크

 


 

JUnit test 파일 만들때 4로 해줬어야..

문제해결

 

 


 

동적SQL : https://mybatis.org/mybatis-3/ko/dynamic-sql.html

 

작성해보기

sql문 쿼리 2줄 로 되는걸

동적쿼리문으로 한줄로 처리

 

 

로그인 id, pw 체크.& 중복체크

두줄을 따로 만들어도 되고 동적쿼리로 하나로 만들어서 변형하면 되니까 sql태그도 하나만 만들어서 같이 쓸 수 있음

if else랑 같은 거 : choose...

아래처럼 각각 해도되고

문제점 pw만 보내면 문제가 나와 and때문

choose when otherwise로도 (else if같은거)

문제가 되는게 where / and/ set할 때 쉼표...  where키워드 없어지면 안되니까 위로 올려야~~~ 

구조적으로  문제점 해결할 수 있는 방안 : trim 사용

prefixOverrides: and/or가 바로 오는 경우 where로 오버라이드 해버리겠다~~~~~ 쿼리문 에러 발생 안하게 됨

앞부분꺼를 지워줄때~~~~~~~~~

 

이경우 3가지 케이스 다 쓸수있음

id만 보내거나 

id pw보내거나

pw만 보내거나

 

트림을 쓸 수 있는 다른 상황

회원정보 수정  시 (한개 컬럼만, 여러개 컬럼을 하는 ) 경우의 수에 따라 쿼리문을 작성하는 것이 아니라 하나의 쿼리문으로 작성하되

하나의 컬럼만 바꾸는 경우 ,가 없어져야하고

쿼리문이 이어질 때 사용하는 , 쉼표를 있게 해야함

끝부분에 있는걸 지울때 . 마지막에 있는 ,를 지운다. 마지막에 ,없으면 그냥 패스~.

suffixOverrides=","

foreach : 반복문 .업그레이드포문~~

 

쿼라문에서 in 연산자처럼 .

쿼리문 다음거처럼 있는거 (특정 list)에서 일치하는 데이터 레코드 컬럼 정보 얻기

 

 

 

selectkey

레코드 전체 개수를 insert의 age값으로 넣어줘보자. 
--insert into test values(#{id}, #{pw}, #{age}, sysdate);
--값을 먼저 준비시켜놔야하니까 실행전에 만들어놔야

회원의 고유번호를 시퀀스를 사용한다면 

시퀀스 내부에서 쓰면 insert할때 계속 써줌, 숫자는 쿼리문 실행 전까진 알 수 없음

자바에서는 어떻 숫자가 뽑힌건지 알 수 없어. 바인딩을 자동으로 해주니까 

외부에서 (자바에서) 해당 숫자를 더 쓸일이 있으면 , selectKey쓰면됨 번호가 뭔지 알려줌.

 

라이크 구문. 검색할 때 주로 사용

마이바티스에서 어떻게 쓰냐면

 

 

문자열 연결 키워드 ||

#{} 안에 값이 문자열이면 '' 자동으로 붙여줌, 숫자면 10 ''안붙여줌 자동으로. 

키워드에 문자열이 오니까

'%s%' 쿼리문 s를 키워드로 바꾸려면 문자열이니까 '%'s'%'가 되니까 연결로 해서 연산처리해야

'%'||'s'||'%' --> '%s%'

xml에 쿼리문

 

인터페이스에

 

 

 

 

 

내일 배울내용

모델부분 
회원가입
로그인 세션돌릴거 쿠키.... 

 

 

 

 

 

 

댓글