보통 게시판을 보게되면 공지글을 볼 수 있는데,

해당 공지글에 기간을 정하여 마지막 날짜 값이 오늘 날짜값 보다 작으면, 공지글에서 일반글로 바뀌게 만들어봄.

 

※DB컬럼값

공지글 지정 컬럼:pin / 시작날짜:startdate / 마지막 날짜:enddate

Oracle DB

<update id="updatePin">
<![CDATA[
	update board
	set pin = 0
	where bno = #{bno}
]]>
</update>
<select id="getEndDate" resultMap="BoardResult">
<![CDATA[
	select enddate from board where bno = #{bno}
]]>
</select>

Controller

	@ResponseBody
	@GetMapping("/updatePin")
	public ResponseEntity<String> updatePin(int bno){
		service.updatePin(bno);
		return ResponseEntity.ok("success");
	}

Ajax 통신을 하여 게시판 화면으로 넘어갔을 때, 자동으로 공지 사항 마지막 날짜 값을 오늘 날짜랑 비교해서 오늘 날짜보다 작으면 공지글에서 일반 글로 자동 으로 값이 바뀌게 하기위해서 이렇게 작성함

 

Service

	@Override
	public void updatePin(int bno){
		BoardVO board = dao.getEndDate(bno);
		log.info("==================================");
		Date endDate = board.getEnddate();
		log.info("공지 마지막일:"+endDate);
		Date today = new Date();
		log.info("오늘 날짜:"+today);
		log.info("==================================");
		if(endDate != null && endDate.before(today)) {
			board.setPin(0);
			dao.updatePin(bno);
		}
		
	}

BoardVO board = dao.getEndDate(bno)로 선언 후에 board 변수로 값을 가져오게 작성을 하였음.

처음에는 BoardVO board = new BoardVO() 이렇게 선언하여서 하였는데 null 값이 들어와서,

board테이블에서 enddate 값 만 읽어오는 부분을 생성해주어야 할 것같다 선언함

 

DAO

	@Override
	public void updatePin(int bno) {
		session.update("mapper.board.updatePin",bno);
	}
	@Override
	public BoardVO getEndDate(int bno) {
		return session.selectOne("mapper.board.getEndDate",bno);
	}

 

JSP

<input type="hidden" id="bno" value="${list.bno}">
<input type="hidden" id="enddate" value="${list.enddate}">

나 같은경우 list.jsp 부분에서 forEach 부분에 hidden 값으로 두개를 줌

 

JS

$(document).ready(function(){
 var bno = document.getElementById('bno').value;
 var enddate = document.getElementById('enddate').value;
 $.ajax({
	    url: '${path}/board/updatePin',
	    type: 'get',
	    data: {'bno':bno,'enddate': enddate },
	    success: function(response) {
	        if (response === 'success') {
	            console.log('Update required');
	        }
	    },
	    error: function(error) {
	        console.log(error);
	    }
	});
})

페이지가 로드되면 bno,enddate 값을 가지고 success이면 pin컬럼을 update를 쳐서 공지글에서 일반글로 내려오게 하였음!

 

이 부분은 스샷을 찍기 애매하여서 사진은 올리지 않았지만, 만약 이글을 보고 구현하게된다면 잘 작동할것임!!!

복사했습니다!