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에 쿼리문
인터페이스에
내일 배울내용
모델부분
회원가입
로그인 세션돌릴거 쿠키....
'코딩' 카테고리의 다른 글
2022.03.30_36일차 (0) | 2022.04.23 |
---|---|
2022.03.25_33일차_spring(8)_회원페이지(2)_수정과 탈퇴, 자동로그인 (0) | 2022.03.30 |
2022.03.22_30일차_spring(5) (0) | 2022.03.24 |
2022.03.21_29일차_spring(4)_EL, JSTL (0) | 2022.03.22 |
2022.03.18_28일차_스프링(3) (0) | 2022.03.18 |
댓글