728x90
Controller
/********************************************** QnA : 쓰기 *******************************************************/
//
@RequestMapping("boardQnaWriteView.bo")
public String boardQnaWriteForm() {
return "boardQnaWriteForm";
}
// 게시판 글쓰기
@RequestMapping("boardQnaWriteForm.bo")
public String insertBoard(@ModelAttribute BoardQnA b) {
System.out.println(b);
// b.setQnaTitle("qnaTitle");
// b.setQnaContent("qnaContent"); 세터를 따로 지정해서 값을 주었기 때문에 저 값이 저장된것
// 파람은 단일, 모델어트리뷰트는 복수 저장할 때 사용.
// 모델어트리뷰트는 뷰의 파라미터값과 vo클래스의 필드명(정확히는 세터명)이 같은 것을 매핑함.
// @ModelAttribute BoardQnA b로 받아오면서 뷰의 name속성 파라미터랑 vo 클래스의 필드명(세터명)이랑 같아서
// 자연스럽게 받아올 수 있었지만 세터를 새로 지정하고 거기에 "qnaTitle" 스트링값을 새로 주었기 때문에 저값이 db에 저장된 것
int result = bService.insertBoardQna(b);
System.out.println(result);
if (result > 0) {
return "redirect:boardQna.bo";
} else {
throw new BoardException("문의사항 등록에 실패하였습니다.");
}
}
Service & DAO
//BoardService
int getQnaListCount();
ArrayList<BoardQnA> getBoardQnaList(PageInfo pi);
int insertBoardQna(BoardQnA b);
// BoardServiceImpl
@Override
public int insertBoardQna(BoardQnA b) {
return bDAO.insertBoardQna(sqlSession, b);
}
// BoardDAO
public int insertBoardQna(SqlSessionTemplate sqlSession, BoardQnA b) {
return sqlSession.insert("boardMapper.insertBoardQna",b);
}
Board-mapper.xml
<!-- QnA 조회 : 페이징처리1 - 총게시물 -->
<select id="getQnaListCount" resultType="_int"> <!-- resultType,resultMap 무조건 있어야함. 리절셋하고 나서 뭘로 받을지 정해줘야하기에 -->
select count(*)
from qna
where qna_status = 'Y'
</select>
<!-- QnA 조회 : 페이징처리2 - 필요 게시물 -->
<select id="getBoardQnaList" resultMap="boardQnaResultSet">
select *
from qna
where qna_status = 'Y'
order by qna_no desc
</select>
<resultMap type="BoardQnA" id="boardQnaResultSet"> <!-- type="" 속성 별칭 설정하면 Board도 가능 -->
<id column="QNA_NO" property="qnaNo"/> <!-- PK(기본키) -->
<result column="QNA_TITLE" property="qnaTitle"/> <!-- 일반 컬럼 -->
<result column="QNA_CONTENT" property="qnaContent"/> <!-- 위의 select태그에서 join해서 가져온 멤버테이블의 컬럼 nickname -->
<result column="QNA_CREATE_DATE" property="qnaCreateDate"/>
<result column="QNA_MODIFY_DATE" property="qnaModifyDate"/>
<result column="QNA_STATUS" property="qnaStatus"/>
<result column="QNA_ANS_STATUS" property="qnaAnsStatus"/>
<result column="EMAIL_ID" property="emailId"/>
</resultMap>
<insert id="insertBoardQna">
insert into qna
values(seq_qnaid.nextval, #{qnaTitle}, #{qnaContent}, sysdate, default, default, default, default)
</insert>
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일 1코딩][Web] memberPwdUpdateForm.jsp (0) | 2022.07.02 |
---|---|
[1일 1코딩][Web-Java] QnA 수정,삭제 (0) | 2022.07.01 |
[1일 1코딩][HTML-CSS] boardQnaUpdateForm.html 만들기 (0) | 2022.06.29 |
[1일 1코딩][Web] 게시물 등록했는데 db에 (null)값 들어오는 이유 (0) | 2022.06.28 |
[1일 1코딩][Web-Java] 문의사항 게시판 전체 리스트 조회 & 백단 서버 연결 - 중점적으로 봐야할 코드 부분 체크 (0) | 2022.06.27 |