Spring 실습(2)

vencott·2021년 5월 19일
0

sinc 인턴교육

목록 보기
17/18

게시글 내부 메뉴 구현

글 삭제

Model

// boardMapper.xml
<delete id="remove">
  DELETE FROM INTERN_BOARD_TBL WHERE SEQ = #{seq}
</delete>
// BoardDao.java
public int removeRow(int seq);
    
// BoardDaoImpl.java
@Override
public int removeRow(int seq) {
	System.out.println("board dao removeRow");
	int result = session.delete(BOARD_PREFIX + ".remove", seq);
	System.out.println("dao readRow result: " + result);

	return result;
}
// BoardService.java
public int remove(int seq);

// boardServiceImpl.java
@Override
public int remove(int seq) {
	System.out.println("board service remove");
	return dao.removeRow(seq);
}

View

// readPage.jsp
<script type="text/javascript">
  $(function() {
  	$('#list').click(function() {
  		location.href = "listPage.do";
  	});

  	$('#remove').click(function() {
  		location.href = "remove.do?seq=" + ${board.seq};
  	});
  });
</script>

Controller

// BoardCtrl.java
@RequestMapping(value = "/remove.do", method = RequestMethod.GET)
public String remove(@RequestParam("seq") int seq, Model model) {
	System.out.println("board ctrl remove");
	return "redirect:/listPage.do";
}

글 수정

Model

// boardMapper.xml
<update id="modify" parameterType="board">
  UPDATE INTERN_BOARD_TBL 
  SET TITLE = #{title}, CONTENT = #{content} 
  WHERE SEQ = #{seq}
</update>
// BoardDao.java
public int modifyRow(Object obj);

// BoardDaoImpl.java
@Override
public int modifyRow(Object obj) {
	System.out.println("board dao modifyRow");
	int result = session.update(BOARD_PREFIX + ".modify", obj);
	System.out.println("dao modifyRow result: " + result);
		
	return result;
}
// BoardService.java
public int modfiy(Object obj);
    
// BoardServiceImpl.java
@Override
public int modfiy(Object obj) {
	System.out.println("board service modify");
	return dao.modifyRow(obj);
}

View

title과 content의 readonly속성 제거

// readPage.jsp
<input type="hidden" id="seq" value="${board.seq}" />

<div class="box-body">
  <div class="form-group">
    <label for="exampleInputEmail1">Title</label>
    <input
      type="text"
      name="title"
      class="form-control"
      value="${board.title}"
      id="title"
    />
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Content</label>
    <textarea class="form-control" name="content" rows="3" id="content">
${board.content}</textarea
    >
  </div>
  <div class="form-group">
    <label for="exampleInputEmail1">Writer</label>
    <input
      type="text"
      name="writer"
      class="form-control"
      value="${board.writer}"
      readonly="readonly"
    />
  </div>
</div>

// script
<script type="text/javascript">
  $(function () {
    $("#list").click(function () {
      location.href = "listPage.do";
    });

    $("#remove").click(function () {
      location.href = "remove.do?seq=" + $;
      {
        board.seq;
      }
    });

    $("#modify").click(function () {
      location.href =
        "modify.do?seq=" +
        $("#seq").val() +
        "&title=" +
        $("#title").val() +
        "&content=" +
        $("#content").val();
    });
  });
</script>

Controller

// BoardCtrl.java
@RequestMapping(value = "/modify.do", method = RequestMethod.GET)
public String modify(BoardVO vo) {
	System.out.println("board ctrl modify: " + vo);
	service.modfiy(vo);
	return "redirect:/readPage.do?seq=" + vo.getSeq();
}

리스트로 돌아가기

View

// readPage.jsp
$('#list').click(function() {
	location.href = "listPage.do";
});

조회수 올리기

Model

upCnt를 update 하는 sql문 추가

// boardMapper.xml
<update id="upCnt" parameterType="board">
  UPDATE INTERN_BOARD_TBL 
  SET VIEWCNT = VIEWCNT + 1 
  WHERE SEQ = #{seq}
</update>

UserDaoImpl에서 upCnt() 구현하고 호출

// UserDaoImpl.java
public int upCnt(Object obj) {
	System.out.println("board dao upCnt");
	return session.update(BOARD_PREFIX + ".upCnt", obj);
}

@Override
public Object readRow(Object obj) {
	int upCntResult = upCnt(obj);
	System.out.println("dao upCnt result: " + upCntResult);
	System.out.println("board dao readRow");
	Object result = session.selectOne(BOARD_PREFIX + ".read", obj);
	System.out.println("dao readRow result: " + result);
	
	return result;
}

검색하기

ajax 비동기 통신

Model

jstl을 이용한 분기 및 like 패턴검색

// boardMapper.xml
<select id="search" parameterType="map" resultType="board">
  SELECT SEQ, TITLE, CONTENT, WRITER, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE,
  VIEWCNT FROM INTERN_BOARD_TBL
  <where>
    <if test="type == 'title'">
      TITLE LIKE '%'||#{keyword}||'%'
    </if>
    <if test="type == 'writer'">
      WRITER LIKE '%'||#{keyword}||'%'
    </if>
  </where>
  ORDER BY 1 DESC
</select>
// BoardDao.java
public List<Object> searchRow(Map<String, String> map);

// BoardDaoImpl.java
public List<Object> searchRow(Map<String, String> map) {
	System.out.println("board dao search: " + map);
	List<Object> result = session.selectList(BOARD_PREFIX + ".search", map);
	System.out.println("dao searchRow result: " + result);
		
	return result;
}
// BoardService.java
public List<Object> search(Map<String, String> map);
    
// BoardServiceImpl.java
@Override
public List<Object> search(Map<String, String> map) {
	System.out.println("board service search");
	return dao.searchRow(map);
}

View

// listPage.jsp
$("#searchBtn").click(function () {
  $.ajax({
    url: "search.do",
    type: "post",
    dataType: "json",
    data: {
      type: $("#searchType").val(),
      keyword: $("#searchKeyword").val(),
    },
    success: function (data) {
      $("#tbody").empty();
      var txt = "";
      $.each(data, function (idx, obj) {
        txt += "<tr><td>" + obj.bno + "</td>";
        txt +=
          "<td><a href='readPage?seq=" +
          obj.seq +
          "'>" +
          obj.title +
          "</a></td>";
        txt += "<td>" + obj.writer + "</td>";
        txt += "<td>" + obj.regdate + "</td>";
        txt +=
          "<td><span class='badge bg-red'>" + obj.viewcnt + "</span></td></tr>";
      });
      $("#tbody").append(txt);
    },
  });
});

Controller

// BoardCtrl.java
@RequestMapping(value = "/search.do", method = RequestMethod.POST)
@ResponseBody
public List<Object> serach(@RequestParam HashMap<String, String> map) {
	System.out.println("board ctrl serch: " + map);
	List<Object> list = service.search(map);
	return list;
}

출처: SHINSEGAE I&C 인턴십

profile
Backend Developer

0개의 댓글