mybatis - DAO 만들기
JDBC에서 DAO 안에 있는 SQL문을 별도의 파일로 분리합니다. (SQL 맵퍼 파일)
SQL 맵퍼 파일에서는 +연산자로 SQL문을 연결할 필요가 없습니다.
mybatis로 만든 DAO에서 INSERT, UPDATE, DELETE문의 경우 COMMIT을 해줘야합니다.
기존 JDBC - DAO
mybatis - DAO
SqlSessionFactory 객체로 SqlSession 객체를 생성합니다.
SqlSession 객체는 SQL을 실행하는 객체입니다.
SqlSession 객체 사용이 끝나면 반드시 close( )를 해줍니다.
SqlSession의 메소드
insert( ) : INSERT문을 실행하고 입력한 데이터 개수를 반환합니다.
update( ) : UPDATE문을 실행하고 변경한 데이터 개수를 반환합니다.
delete( ) : DELETE문을 실행하고 삭제한 데이터 개수를 반환합니다.
selectList( ) : SELECT문을 실행하고 조회한 객체 값들을 반환합니다. (여러 행 조회)
selectOne( ) : SELECT문을 실행하고 조회한 하나의 객체 값을 반환합니다. (하나의 행 조회)
INSERT, UPDATE, DELETE문의 경우 commit( ) 메소드를 작성합니다.
SqlSession 메소드 인자
ex) insert(statement, parameter)
statement : 첫 번째 인자값은 SQL 맵퍼 파일에서 실행할 SQL 태그 id 속성값입니다.
parameter : 두 번째 인자값은 DAO SQL 메소드의 파라미터 값입니다.
SQL 맵퍼 파일
SQL 실행에 필요한 값들에 대해 JAVA VO클래스와 DB테이블의 컬럼을 매핑하여 처리합니다.
<mapper>태그 안에 SQL문 태그를 작성합니다.
id 속성값은 식별자입니다.
→ SqlSession 메소드에서 인자로 사용됩니다.
1. SQL문에 값을 대입하는 부분 ? 기호는 EL 표현식의 기호 #{ }로 변경합니다.
→ 대입할 프로퍼티명은 VO 클래스의 필드명과 정확히 일치해야 합니다. (대소문자 구분)
2. #{ }에 대입할 값의 형식을 parameterType 속성에 설정합니다. (패키지명.클래스명 형식)
3. SQL 실행 결과 매핑될 데이터 타입을 resultType 속성에 설정합니다. (패키지명.클래스명 형식)
→ SELECT문 실행시 조회되는 데이터의 타입입니다.
→ 타입이 List<T> 일 경우 <T>에 해당하는 제너릭 타입을 설정합니다.
실행 예제
taglib 지시자
<%@ taglib uri="사용할 태그의 라이브러리 URI" prefix="접두사" %>
추가로 사용할 태그에 대한 라이브러리 설정을 합니다.
JSTL
JSP Standard Tag Library
JSTL 태그를 이용하면 JSP 페이지에서 자바 코드(스크립트릿)를 줄일 수 있습니다.
JSTL을 사용하려면 라이브러리를 추가해야합니다.
Maven으로 pom.xml에 JSTL 라이브러리를 추가합니다.
taglib 지시자로 사용할 태그 라이브러리를 설정합니다.
JSL 태그
<c : set> 태그
변수를 선언하거나 기존의 값을 변경합니다.
<c : set var="변수명" value="값"/>
<c : out> 태그
출력할 때 사용합니다.
<c : out value="출력할 값"/>
<c : if> 태그
test 속성값이 참이면 실행됩니다.
<c : if test="조건식"> 실행할 구문 </c : if>
<c : choose> <c : when> <c : otherwise> 태그
<c : choose> 태그 내에 <c : when> <c : otherwise> 태그를 사용합니다.
when 태그의 test 속성값이 참이면 when 태그를 실행하고 거짓이라면 otherwise 태그를 실행합니다.
when은 if와 유사하고 otherwise는 else와 유사합니다.
<c : choose>
<c : when test="조건식">조건식이 참일 경우 실행할 구문</c : when>
<c : otherwise>조건식이 거짓일 경우 실행할 구문</c : otherwise>
</c : choose>
<c : forEach> 태그
반복문을 실행합니다.
<c : forEach var="변수명" begin="시작인덱스" end="종료인덱스" varStatus="상태용 변수" step="증가값">
${status.index} : 인덱스 값을 리턴합니다.
${status.count} : 순서를 1부터 나타냅니다.
<c : forTokens> 태그
문자열을 구분기호로 분리합니다.
<c : forTokens items="분리할 문자열" delims="구분기호" var="분리 후 변수명">실행할 구문</c : forTokens>
파라미터 객체 param
param.파라미터명
파라미터의 값을 가져옵니다.
<c : forEach> 예제
변수 list에 selectAll 결과 데이터를 저장합니다. 요청을 jstl_ex3.jsp로 전달합니다.
<c : forEach> 태그로 반복문을 실행하여 출력합니다.
<c : forEach var="변수명" items="목록데이터" varStatus="상태용 변수">실행할 구문</c : forEach>
반복문을 실행하면서 items에서 꺼낸 항목을 var 변수에 참조시킵니다.
프로퍼티명 입력 시 vo 클래스의 변수명과 일치하도록 합니다. (대소문자 구분)
실행 결과
'수업 일지 > JSP' 카테고리의 다른 글
58일차 - [JSP] setTimeout()/쿠키 (0) | 2022.03.31 |
---|---|
57일차 - [JSP] session 객체 (0) | 2022.03.30 |
55일차 - [JSP] 내장 객체/속성/include/EL/빌드 도구/mybatis (0) | 2022.03.28 |
52일차 - [JSP] GET, POST 방식/Lombok (0) | 2022.03.23 |
51일차 - [JSP] request 내장객체/메소드 (0) | 2022.03.22 |
댓글