#10_[spring boot] 게시판 등록 (mybatis 사용) :: 개발/일상_Mr.lee

#10_[spring boot] 게시판 등록 (mybatis 사용)

Posted by Mr.mandu.
2017. 12. 12. 01:30 개발/spring boot, gradle, mybatis Project

안녕하세요.

어찌어찌 게시판 등록까지 왔습니다.


이전포스팅 일부 링크 첨부하겠습니다.

[개발/spring boot, gradle, mybatis Project] - #9_[spring boot] 게시판 등록 화면 summernote 웹 에디터 사용

[개발/spring boot, gradle, mybatis Project] - #8_[spring boot] 게시판 목록 출력(페이징 처리, 부트스트랩)

[개발/spring boot, gradle, mybatis Project] - #3_[spring boot] 프로젝트 처음 시작하기(jsp vieeResolver)





저도 이렇게 포스팅을 늘려나가니깐 뿌듯하네요.

이전 포스팅에서 웹 에디터 summernote를 활용하여 화면을 구축하였습니다.

현재 대략 이런 모습입니다.


이제 게시글을 쓰고 저장하는 모듈을 만들어보겠습니다.


jsp body 부분 입니다.

<div class="board_div">
		<h2 class="page-header">Write</h2>


 		<form class="form" id="boardSearchVO" name="boardSearchVO">
			<input type="hidden" id="pageIndex" name="pageIndex" value="${boardSearchVO.pageIndex}"/>
			<input type="hidden" id="pageSize" name="pageSize" value="${boardSearchVO.pageSize}"/>
			<input type="hidden" id="bbs_sno" name="bbs_sno" value="${boardSearchVO.bbs_sno}"/>
			<input type="hidden" id="usr_id" name="usr_id" value="${boardSearchVO.usr_id}"/>
			<input type="hidden" id="title" name="title" value="${boardSearchVO.title}"/>
        </form>

        <form class="form-horizontal"  id="boardForm" name="boardForm" method="post" enctype="multipart/form-data">
        	<input type="hidden" id="bbs_contents" name="bbs_contents" value=""/>
        	<input type="hidden" id="ntc_yn" name="ntc_yn" value="N"/>
        	<input type="hidden" id="atch_file_sno" name="atch_file_sno" value="0"/>
        	<input type="hidden" id="bbs_sno" name="bbs_sno" value="${boardSearchVO.bbs_sno}"/>
        	
		  <div class="form-group">
		    <label for="inputEmail3" class="col-sm-2 control-label">Title</label>
		    <div class="col-sm-10">
		      <input type="text" class="form-control" id="bbs_title" name="bbs_title" placeholder="Title">
		    </div>
		  </div>

		  <div class="form-group">
		   	<label for="inputPassword3" class="col-sm-2 control-label">contents</label>
		   	<div class="col-sm-10">
		   		<div id="summernote"></div>
		   	</div>
		  </div>
		  
		 <%-- <div class="form-group">
		    <label for="inputEmail3" class="col-sm-2 control-label">첨부파일</label>
		    <div class="col-sm-10">
		      <div id="fine-uploader"></div>
    			<!-- Fine Uploader -->
    			<jsp:include page="/resources/fileUpload/all.fine-uploader/lee/division_script.jsp" flush="true" />
		    </div>
		  </div> --%>


		</form>

        <div class="pull-right"><a href="#" class="btn btn-primary btn-success boardAddBtn"><span class="glyphicon glyphicon-pencil"></span> Write</a></div>
        
    </div>



그리고 javascript 부분입니다.


$('#summernote').summernote({
	    placeholder: 'Write contents',
	    height: 400,
	    minHeight: null,             // set minimum height of editor
	    maxHeight: null,             // set maximum height of editor
	 });
	 
	$('.boardAddBtn').click(function(){
		
		var markupStr = $('#summernote').summernote('code');
		$("#bbs_contents").val(markupStr);

		$.ajax({
			url: '/board/notice/boardAddPro',
			data: $("#boardForm").serialize(),
			type: 'post',
			dataType: 'json',
			error: function(){
				alert('요청하신 페이지에 문제가 있어 표시할 수 없습니다.');
			},
			success: function(json){
				
				if(json.result!='0'){
					alert('등록을 완료하였습니다.');
					$("#boardSearchVO").attr('action', '/board/notice/boardList').submit();	
				}else{
					alert('등록을 실패하였습니다.');
				}		
			}
		});
		
		return false;
	});

소스코드를 보시면

$('#summernote').summernote << 이부분은

등록 화면에 웹에디터가 출력되는 부분입니다.


실질적인 등록 부분은

boardAddBtn을 클릭한 부분을 보시면 됩니다.

summernote에 입력된 값을 가져오기위해야

$(#summernote).summernote('code')를 이용하였습니다.


그리고 그값을 bbs_contents에 넘겨주었습니다.

그리고 컨트롤러로 값을 넘겨주어 mybatis를 이용해 insert 하였습니다.


BoardService.java

long boardAdd(HttpServletRequest req, BoardVO boardVO);


BoardImpl.java

public long boardAdd(HttpServletRequest req, BoardVO boardVO) {

boardVO.setReg_usr_no(LoginManager.getUsrNo(req));

long inertRowCnt =boardMapper.boardAdd(boardVO); 

return inertRowCnt == 0 ? 0 : boardVO.getBlt_rsrc_sno();

}


long inertRowCnt =boardMapper.boardAdd(boardVO); 

return inertRowCnt == 0 ? 0 : boardVO.getBlt_rsrc_sno();


ibatis와 mybatis의 retrun 값은 다릅니다.

이유는 이전포스팅에 설명해 두었습니다.

[개발/spring boot, gradle, mybatis Project] - #번외_mybatis inser 이후 return 값이 1인 이유

BoardMapper.java

long boardAdd(BoardVO boardVO);


Board.xml

	 <insert id="boardAdd" parameterType="lee.domain.BoardVO">
	 	<selectKey resultType="java.lang.Long"   keyProperty="blt_rsrc_sno"  order="BEFORE">
			select seq_ck_blt_rsrc.nextVal  from dual
		</selectKey>
	 	insert into ck_blt_rsrc (
	 		blt_rsrc_sno, 컬럼
	 	)
	 	values(
	 		#{blt_rsrc_sno}, 컬럼
	 	)
	 	
	 </insert>

이렇게 하면 게시글이 등록이 됩니다.