본문 바로가기
자바웹프로그래밍/전자정부프레임워크

전자정부프레임워크를 이용 쇼핑몰 만들기 #4-select

by 디찌s 2020. 4. 26.
728x90
반응형

1.mybatis mysql 작성

 

위와같은 경로에서 PetArticle_SQL_mysql을 연뒤 수정하자

 

PetArticle_SQL_mysql 작성

<?xml version="1.0" encoding="UTF-8"?><!-- 
	수정일                 수정자                          수정내용
  =========     =======    =================================================
  2011.09.21    서준식              NTT_ID를 IDGENT서비스를 사용해서 생성하므로 selectMaxNttId문은 실제 사용하지 않음
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ArticleDAO">
	<resultMap id="boardlist" type="pet.com.bbs.service.BoardVO">
		<result property="nttId" column="NTT_ID"/>
		<result property="bbsId" column="BBS_ID"/>
		<result property="nttCn" column="NTT_CN"/>
		<result property="nttSj" column="NTT_SJ"/>
		<result property="frstRegisterId" column="FRST_REGISTER_ID"/>
		<result property="frstRegisterPnttm" column="FRST_REGIST_PNTTM"/>
	</resultMap>
	
	
	<select id="Articlelist" parameterType="pet.com.bbs.service.BoardVO" resultMap="boardlist">
	    SELECT NTT_ID,BBS_ID,NTT_CN,NTT_SJ,FRST_REGISTER_ID,FRST_REGIST_PNTTM
	    FROM COMTNBBS
	    WHERE BBS_ID = #{bbsId}
	    
	    
	</select>
	
	<insert id="Articleinsert" parameterType="pet.com.bbs.service.BoardVO">
	    INSERT INTO COMTNBBS
	    (NTT_ID,BBS_ID,NTT_SJ,NTT_CN,FRST_REGISTER_ID,FRST_REGISTER_PNTTM)
	    VALUES (#{nttId},#{bbsId},#{nttSj},#{nttCn},#{frstRegisterId},SYSDATE())
	    
	    
	</insert>
	
	
</mapper>

 

 

간략하게 내용을 살펴보자면 namespace는 xml 에 접근할 클래스? 라고보면된다

 

그리고 resultMap은 BoardVo에 변수(property)들과 db칼럼들을 맵핑한 결과를 만드는 어떠한 객체라고 생각해야한다.

 

 

<select id="Articlelist" parameterType="pet.com.bbs.service.BoardVO" resultMap="boardlist">
	   SELECT NTT_ID,BBS_ID,NTT_CN,NTT_SJ,FRST_REGISTER_ID,FRST_REGIST_PNTTM
	    FROM COMTNBBS
	    WHERE BBS_ID = #{bbsId}
 </select>

 

 

id - 접근할 이름

parameterType - 파라미터로 넣어줄 객체에 타입

resultMap - sql실행결과 나온 값을 넘겨줄 Map

 

 

 

 

	
	<insert id="Articleinsert" parameterType="pet.com.bbs.service.BoardVO">
	    INSERT INTO COMTNBBS
	    (NTT_ID,BBS_ID,NTT_SJ,NTT_CN,FRST_REGISTER_ID,FRST_REGISTER_PNTTM)
	    VALUES (#{nttId},#{bbsId},#{nttSj},#{nttCn},#{frstRegisterId},SYSDATE())
	    
	    
	</insert>

 

select 문과 속성 내용들은 같다 

 

 

이렇게 xml을 만든뒤 selectServiceimpL로 돌아가자

 

ArticleServiceimpL.java

package pet.com.bbs.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import pet.com.bbs.service.ArticleService;
import pet.com.bbs.service.BoardVO;
import pet.com.sql.CommonDAO;


@Service("ArticleService")
public class ArticleServiceimpL implements ArticleService{
	
	@Resource(name = "commonDAO")
	private CommonDAO commondao;
	
	@Override
	public List<BoardVO> Articlelist(BoardVO boardvo) {
		 List<BoardVO> boardlist = commondao.selectList("ArticleDAO.Articlelist",boardvo);
		return boardlist;
	}

	@Override
	public void Articleinsert(BoardVO boardvo) {
		
		
	}
	
}

 

ArticleServiceimpL에서 commondao를 불러온뒤 commondao가 상속받은 EgovComAbstractDAO 클래스 안에 있는

 

selectList 메소드를 사용하여 쿼리Id 와 파라미터값인 boardvo를 보내준다 

 

이제 컨트롤러에서 완성시킨 서비스 로직을 불러온다

 

 

ArticleController.java

@Controller
@SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
public class ArticleController {
	
	@Resource(name = "ArticleService")
	private ArticleService articleservice;
	
	
	@RequestMapping("/pet/bbs/Articlelist.do")
	public String Articlelist(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model) throws Exception{
		System.out.println("--------ssssssss--------------");
		System.out.println("----------------------"+boardVO.getBbsId());
		
		List<BoardVO> boardlist = articleservice.Articlelist(boardVO);
		
		model.addAttribute("result",boardlist);
		
		
		return "pet/bbs/Articlelist";
	}
}

 

@Resource로 Serviceimpl에서 설정한 @Service이름을 불러온뒤 articleservice를 선언하자

 

그후 model.addAttribute 를 사용하는데

 

첫번째 파라미터는 "result" 로 jsp에 내용을 전달할때 어떤 이름으로 전달하냐라는 파라미터이고

 

두번째 파라미터는 어떤 값을 전달하냐라는것이다. 우리는 articleservice로 게시판에 목록을 가져오므로

 

그 값을 두번째 파라미터로 저장해주면 된다.

 


2.LIST 수정

Articlelist.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div class="container">
		<div class = "row">
			<table class="table table-striped" style="text-align:center; border:1px solid #dddddd"> 
				<thead>
					<tr>
						<th style="background-color: #eeeeee; text-align: center;">번호</th>					
						<th style="background-color: #eeeeee; text-align: center;">제목</th>
						<th style="background-color: #eeeeee; text-align: center;">작성자</th>
						<th style="background-color: #eeeeee; text-align: center;">작성일</th>
					</tr>
				</thead>
				<tbody>
					
						<c:forEach items="${result}" var="resultInfo" varStatus="status">
						<tr>
						
						<form name=subForm action="<c:url value='/pet/bbs/Articledetail.do'/>" method='post'>		
						<input name="nttId" type="hidden" value="<c:out value="${resultInfo.nttId}"/>">
						<input name="bbsId" type="hidden" value="<c:out value="${resultInfo.bbsId}"/>">
		
						<td><c:out value='${resultInfo.nttId}'/></td>
						<td><c:out value='${resultInfo.nttSj}'/></td>
						<td><c:out value='${resultInfo.frstRegisterId}'/></td>
						<td><c:out value='${resultInfo.frstRegisterPnttm}'/></td>
						</form>
						</tr>		
						
						</c:forEach>
						
				
				</tbody>
			</table>	
			

			<div class="btn btn-primary pull-right">
				<span><a href="<c:url value='/adm/bbs/insertArticleView.do?bbsId=${searchVO.bbsId}' />">글쓰기</a></span>
			</div>

		</div>
	</div>
</body>
</html>

위와 같이 jsp를 수정하자

 

여기서 나오는 <c:foreach> ,<c:url> ,<c:out>은 jstl 문법으로 간략히 소개하자면

 

<c:forach>는 items 에서 받은 값(controller에서 'result'로 이름을 명명한뒤 보내준값 ) var(resultInfo )라는  값으로

 

하나씩 돌려주며 items값이 다 나올때가지 반복해준다

 

 

 

아래와 같은 model로 attribute를 추가할때 파라미터 첫번째 이름인 result를

 

   

jsp에서 ${변수명} 즉 ${result}로 받을수있다.  

 

또한 스프링에서는  아래와같이 @ModelAttribute로 ("이름") 을 설정한 것도

JSP에서 그대로 전달되어 ${searchVO} 처럼 쓸수있다.

 

 

 

<c:url>태그는 URL에 자동으로 COntext path를 붙여주는 태그이며 <c:out>은 어떤 값을 입력받던지 간에 콘솔이 아닌 화면에 문자열로 바꾸어서 보여주는 역할이다.

 

 

이제 리스트가 화면에 제대로 나오는지 확인해보자

 

 

DB comtnbbs테이블 안에 2개의 로우를 저장해본뒤 서버를 실행하자

 

우리가 원하는 DB내용 목록들을 잘 나타내어준다

 

다음 글에서는 글쓰기 과정을 설명할것이다~ 

 

 

끝~~

728x90
반응형

댓글