뭔가 jstl sql문을 대충 빠르고 간단하게 쓰고 싶었는데
생각보다 검색을 많이 해야하기도 했고
검색하면서도 뭔가 정리가 안된 느낌이 들기도 해서
따로 간단하고 보기 편하게 포스팅 해봅니다.
1. 태그 라이브러리 선언
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
2. sql:setDataSource를 사용하여 DB 연결
...
pageContext.setAttribute("dbconnectUrl", dbconnectUrl);
pageContext.setAttribute("Db_USER", Db_USER);
pageContext.setAttribute("Db_PASS", Db_PASS);
...
<sql:setDataSource
url="${dbconnectUrl}" // ex) jdbc:mariadb://url:dbport/dbname
user="${Db_USER}"
password="${Db_PASS}"
var="dataSource"
scope="application"/>
데이터베이스에 접속하기 위한 Data Source를 생성
3. sql:query를 이용하여 SQL query문 실행
<c:set var="rs_point_query"
value="select a.*, (select c_pass from ... = ${item.team_no} and c_use = 0 ) as c_exp ... where a.c_home = ${c_home} and ... order by a.c_no asc" />
// 이런식으로 쿼리에 동적으로 변하는 변수 사용하여 넣는 것도 가능
// <c:out value="${rs_point_query}" />
// c:out로 query 확인하고 싶을 경우
<sql:query var="result" dataSource="${dataSource}"
sql="${rs_point_query}" />
4. Query 결과 확인
// 결과 확인
<c:forEach var="row" items="${result.rows}">
<c:choose>
<c:when test="${row['c_result'] eq 0}">
<c:when test="${row['c_now'] eq 0}">
<div class="content__table--btn btn-applying">
<a href="#none" class="cursor-default">접수</a>
</div>
</c:when>
...
쿼리문 결과 출력에는 검색해보면 여러가지 방법이 있는데
(columnNames, rowsByIndex 등)
저는 그냥 간단하게 컬럼명을 통해 출력해줄거라서
${result.rows} 값을 가져와서
${row['컬럼명']}
이런식으로 필요하신 컬럼 쉽게 가져오시면 됩니다.
5. Query 전체 결과 개수 확인
<c:if test="${result.rowCount eq 0}">
// 데이터가 비었을 때
</c:if>
데이터가 비었을 때와 같은 처리를 해주기 위해
쿼리 결과의 전체 결과 개수를 알아야한다면
${result.rowCount}를 사용하시길 바랍니다.
https://intrepidgeeks.com/tutorial/introduction-to-jstl-sql-tag
http://ojc.asia/bbs/board.php?bo_table=LecServletJSP&wr_id=173
'Language > Java, Jsp' 카테고리의 다른 글
JSP ResultSet (0) | 2022.04.06 |
---|---|
JSP - jstl 변수 공유 (0) | 2022.04.01 |
JSP cafe24 SMS send (0) | 2022.03.24 |
jstl funtion (0) | 2022.03.18 |
JSP ResultSet 전체 레코드 개수 구하기 (0) | 2022.03.16 |