Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

뇌약간고침

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

Study/Spring

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

minulbora 2024. 3. 18. 12:39

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;
	}

 

 

끝!