ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전자정부프레임워크를 이용 쇼핑몰 만들기 #4-select
    자바웹프로그래밍/전자정부프레임워크 2020. 4. 26. 14: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
    반응형
Designed by Tistory.