[스프링] 프로시저 xml 호출하기

    del을 3개나 연달아 해야 해서 간단한 프로시저를 활용해 보기로 했다. 

    xml 파일

    <delete id="boardDelProc" parameterType="long" statementType="CALLABLE">
        BEGIN
            DELETE FROM INS_COMMENT WHERE BOARD_NUM = #{value};
            DELETE FROM INS_BOARD_FILE WHERE BOARD_NUM = #{value};
            DELETE FROM INS_LIKE WHERE BOARD_NUM = #{value};
            DELETE FROM INS_BOARD WHERE BOARD_NUM = #{value};
        END;
    </delete>

    위부터 순서대로 진행. xml 파일에서 세미콜론( ; ) 찍어줘야 함. 

    FK로 마지막 board num 을 참조하고 있으므로 무결성을 유지하기 위해 (물론 disable 해두긴 함) 반드시 저 순서대로 지워야 함. 

    다음 java 파일

    	//보드-코멘트-파일-라이크
    	public int boardDelProc (long boardNum);

    int 로 되있긴 한데 리턴을 아마 안할것임...

    다음은 service 파일

    	//삭제 프로시저
    	@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
    	public void boardDelProc (InsBoard insBoard) throws Exception {
    		
    		//프로시저는 리턴값 없음
    		boardDao.boardDelProc(insBoard.getBoardNum());
    		
    		FileUtil.deleteFile(UPLOAD_SAVE_DIR2+FileUtil.getFileSeparator()+
    					insBoard.getInsBoardFile().getFileName());
    
    	}

    java에서부터 void로 고쳐야 하는데, 그 전에 오류난 걸 급하게 고치느라고 서비스단부터만 바꿔뒀나봄...

    마지막 컨트롤러

    @RequestMapping (value="/board/delBoard", method=RequestMethod.POST)
    	@ResponseBody
    	public Response<Object> delBoardProc (MultipartHttpServletRequest request, HttpServletResponse response){
    		Response<Object> ajaxRes = new Response<Object>();
    		
    		long boardNum = HttpUtil.get(request, "boardNum", (long)0);
    		String fileName = HttpUtil.get(request, "fileName","");
    		String userId = HttpUtil.get(request, "userId","");
    		String fileExt = HttpUtil.get(request, "fileExt","");
    		String cookieId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
    		
    		if(!StringUtil.isEmpty(userId)&& !StringUtil.isEmpty(fileExt)&&
    				!StringUtil.isEmpty(fileName)&& boardNum!=0) {
    			if(StringUtil.equals(userId, cookieId)) {
    				InsBoard insBoard = new InsBoard();
    				insBoard.setUserId(userId);
    				insBoard.setBoardNum(boardNum);
    				logger.debug("fileName:" +fileName);
    				InsBoardFile insBoardFile = new InsBoardFile();
    				insBoardFile.setFileName(fileName);
    				insBoardFile.setFileExt(fileExt);
    				insBoard.setInsBoardFile(insBoardFile);
    //				insBoard.getInsBoardFile().setFileName(fileName);
    //				insBoard.getInsBoardFile().setFileExt(fileExt);
    				try {
    					boardService.boardDelProc(insBoard);
    					ajaxRes.setResponse(0, "success");
    				}
    				catch(Exception e) {
    					logger.error("[BoardController] delBoardProc Exception",e);
    				}
    				
    			}
    			else {
    				ajaxRes.setResponse(300, "no authority");
    			}
    		}
    		else {
    			ajaxRes.setResponse(400, "bad Request");
    		}
    		
    		return ajaxRes;
    	}

     

     

    끝!

    댓글