728x90

 

 

Controller

/********************************************** QnA : 수정  *******************************************************/
	
	
	@RequestMapping("boardQnaUpdateView.bo")
	public String boardUpdateForm() {
		return "boardQnaUpdateForm";
	}
	
	@RequestMapping("boardQnaUpdateForm.bo") 
	public String updateBoardQna(@ModelAttribute BoardQnA b, @RequestParam("page") int page,
									HttpSession session) {  
		
		String id = ((Member)session.getAttribute("loginUser")).getEmail();
		b.setEmailId(id);
		
		int result = bService.updateBoardQna(b); 

		if(result > 0) {
			//model.addAttribute("board", b)...;
			// 보드 보낼 필요없음. 화면 상세보기 페이지로 가기 때문에 상세보기 페이지로 가는 bdetail.bo 이용하면 됨
			//return "redirect:bdetail.bo?bId=" + b.getBoardId() + "&page=" + page;
			
			// 리다이렉트인데 데이터보존됨
//			model.addAttribute("bId",b.getBoardId());
//			model.addAttribute("page",page);
			return "redirect:boardQna.bo";
			
		} else {
			throw new BoardException("문의사항 수정에 실패하였습니다.");
		}
	}
	
	
	
	
	
/********************************************** QnA : 삭제  *******************************************************/
	
	
	@RequestMapping("boardQnaDeleteForm.bo")
	public String deleteBoard(@ModelAttribute BoardQnA b, HttpSession session) {  
			
		
		String id = ((Member)session.getAttribute("loginUser")).getEmail();
		b.setEmailId(id);
		
		int result = bService.deleteBoardQna(b);
		
		if(result > 0) {
			return "redirect:boardQna.bo";
		}else {
			throw new BoardException("QnA 삭제에 실패하였습니다.");
		}
	}

 

 

Service & DAO

// BoardService
	int updateBoardQna(BoardQnA b);
	int deleteBoardQna(BoardQnA b);
    
// BoardServiceImpl
   	// QnA 수정
	@Override
	public int updateBoardQna(BoardQnA b) {
		return bDAO.updateBoardQna(sqlSession, b);
	}

	// QnA 삭제
	@Override
	public int deleteBoardQna(BoardQnA b) {
		return bDAO.deleteBoardQna(sqlSession, b);
	}


// BoardDAO
	// QnA 수정
	public int updateBoardQna(SqlSessionTemplate sqlSession, BoardQnA b) {
		return sqlSession.update("boardMapper.updateBoardQna",b);
	}
	
	// QnA 삭제
	public int deleteBoardQna(SqlSessionTemplate sqlSession, BoardQnA b) {	// delete도 가능.  status='N'으로 변경 
		return sqlSession.update("boardMapper.deleteBoardQna",b);
	}

 

 

Board-mapper.xml

<!-- QnA 수정 -->
	<update id="updateBoardQna">
		update qna
		set qna_title = #{qnaTitle}, qna_content = #{qnaContent}
		
		where email_id = #{emailId}
	</update>
 	
<!-- QnA 삭제 -->
	<update id="deleteBoardQna">
		update qna
		set qna_status = 'N'
		where email_id = #{emailId}
	</update>

 

뷰단 삭제 메세지 추가

	<script>
		function boardQnaDelete(){
			if(confirm("정말 삭제하시겠습니까?")){
				location.href="boardQnaDeleteForm.bo"
			}
		}
	</script>

 

728x90
반응형
728x90

 

1) import static common.Template.*;

Template.java에서 만든 db연결 기능을 끌어와 쓸 것

 

2) SqlSession session = getSqlSession()

db 연결

 

3) controller, dao 호출 및 데이터 전송

public class MemberService {
	public Member selectMember(Member m) {
		
		SqlSession session = getSqlSession();
		
		Member member = new MemberDAO().selectMember(session, m);
		
		session.close();
		
		return member;
	}
}


	public void insertMember(Member m) throws MemberException {

		SqlSession session = getSqlSession();
		
		new MemberDAO().insertMember(session, m);
		
		// 인서트가 잘안됬으면 롤백해야함. 롤백은 dao에서 해야함. 제대로 잘안됬으면 익셉션 발생할거고, 서비스에서 나눠봤자 의미x
		session.commit();
		session.close();
		
	}

 

728x90
반응형
728x90

 

컨트롤러인 서블릿으로부터 유저에게 받은 유저정보를 넘겨 받아 DAO로 연결 정보와 유저정보를 같이 넘겨주면서 DAO를 호출한다.

 

또한 Service 클래스에서 역할인 DB연결 Connection 클래스를 사용하여 오라클과 연결해주고, 기능이 복잡해지면 꼬일 수 있기 때문에 close로 닫아주도록 하자.

메소드 기능에 따라 트랜잭션 처리가 필요하면 commit & rollback 추가

 

public Member login(Member mem){
    Connection conn = getConnection();

    Member loginC = new MemberDAO().login(conn, mem);

    close(conn);

    return loginC;

}
728x90
반응형

+ Recent posts