웹 프로그래밍/Spring

[Spring] 7. 스프링 기본(6) - 게시판 (CRUD)2

코딩하는 문과생 2020. 2. 7. 09:44

[삭제하기 - 스크립트 이용]

0. 준비

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

1. Mapper수정

<delete id="delete" parameterType="board">
	DELETE FROM INTERN_BOARD_TBL
	WHERE SEQ = #{seq}
</delete>

2. Dao수정

@Override
public int removeRow(Object obj) {
	int resultDao = session.delete(PREFIX+".delete", obj);
	return resultDao;
}

3. Service수정

@Override
public int remove(Object obj) {
	int resultService = dao.removeRow(obj);
	return resultService;
}

4. Ctrl수정

@RequestMapping("/remove.do")
public String remove(BoardVO vo) {
	System.out.println("-- remove --");
	int flag = service.remove(vo);
	System.out.println("remove flat : " + flag);
	return "redirect:/listPage.do";
}

[수정하기 - 스크립트 이용]

0. 준비

    <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() {
    			//console.log("modify.do?seq=" + $("#seq").val() + "&title=" + $("#title").val() + "&content=" + $("#content").val());
    			location.href="modify.do?seq=" + $("#seq").val() + "&title=" + $("#title").val() + "&content=" + $("#content").val();
    		});
    	})
    
	</script>

1. Mapper

		<update id="update" parameterType="board">
			UPDATE 	INTERN_BOARD_TBL 
			SET 	TITLE = #{title}, CONTENT = #{content}
			WHERE 	SEQ = #{seq} 
		</update>

2. Dao

	@Override
	public int modifyRow(Object obj) {
		int modifyDao = session.update(PREFIX+".update",obj);
		return modifyDao;
	}

3. Service

	@Override
	public int modify(Object obj) {
		int modifyService = dao.modifyRow(obj);
		return modifyService;
	}

4. Controller

	@RequestMapping("/modify.do")
	public String modify(BoardVO vo) {
		System.out.println("-- modify --");
		int flag = service.modify(vo);
		System.out.println("modify flag : " + flag);
		return "redirect:/listPage.do";
	}

[조회수 - DAO에 메소드 추가]

0. 준비

x

1. Mapper

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

2. Dao

//upCnt 추가
public int upCnt(Object obj) {
	return session.update(PREFIX+".upCnt", obj);
}
//메소드 호출
@Override
public Object readRow(Object obj) {
	int upCntFlag = upCnt(obj);
	System.out.println("upCntFlag : " + upCntFlag);
	System.out.println("board dao readRow : " + obj);
	return session.selectOne(PREFIX+".read", obj);
}

3. Service

x

4. Controller

x

[검색하기 - AJAX 통신]

0. 준비

	$("#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.seq+"</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); 
			}		
		});
	});

1. Mapper - 쿼리문에 태그 작성

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

2. Dao

	@Override
	public List<Object> searchRow(HashMap<String, String> map) {
		List<Object> searchDao = session.selectList(PREFIX+".search", map) ;
		return searchDao;
	}

3. Service

	@Override
	public List<Object> search(HashMap<String, String> map) {
		List<Object> searchService = dao.searchRow(map);
		return searchService;
	}

4. Controller - Map으로 넘기기, @ResponseBody는 반환값을 JSON으로 만들어준다.

	@RequestMapping("/search.do")
	//리턴타입을 json화 해준다. 따라서 코드상에서 따로 작업할 필요 없다.
	@ResponseBody
	public List<Object> search(String type, String keyword, HashMap<String, String> map) {
		System.out.println("-- search --");
		map.put("type", type);
		map.put("keyword", keyword);
		List<Object> result = service.search(map);
		return result;
	}

결과