본문 바로가기
수업 일지/JSP

56일차 - [JSP] mybatis - DAO/taglib 지시자/JSTL

by 쿠쿠씨 2022. 3. 29.
반응형

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 클래스의 변수명과 일치하도록 합니다. (대소문자 구분)

 

실행 결과

반응형

댓글