게시판 최신글에 새글 이미지와 답글에 REPLY 이미지를 삽입하시오.

1. 1 화면단

list.drawio

list.jpg

2. 1 구상

새 글 작성 시 new 이미지 붙음
답글 작성 시 re 이미지 붙음

조건 1. 이미지 유지시간 30분
조건 2. viewArtilce에서도 보이게? (보류)

title에 자동으로 붙어야함

re는 parentNo이 0초과면 붙게

이미지 제작 - 끝
DB의 writeDate -> TO_CHAR로 년월일+시분 뽑기
VO -> 년월일 시분 차이 저장할 변수 -> minDif
DAO -> X
SERVICE -> X
JSP -> 30분 기준 조건식 <c:if>
IMAGE -> /src/main/webapp/resources/image -> new이미지, re이미지 추가

JAVA에서 sysdate - writeDate = 30이상이면 [new] 이미지 안나오게?
답글은 parentNO이 1이상이면 [re] 이미지 들어가게?

쿼리문으로 (현재시간(YYMMDD HH24MI) - 작성시간(YYMMDD HH24MI))*24*60 계산뽑아서
30이하 일 때만 new 이미지 출력
re는 listArticles.jsp에서 답글은 따로 뽑아서 적용하기때문에 그곳에 re이미지 출력
+ new 이미지(new 이미지 조건도 똑같이)

noticeBoard_5_1.jpg

noticeBoard_5_1.drawio

3. 구현 [공지글, 일반글 구분 + 글번호]

3.1 DB

create table t_board(
articleType number(1),
articleNO number(10) primary key,
parentNO  number(10) default 0,
title varchar2(500) not null,
content varchar2(4000),
imageFileName varchar2(100),
writedate date default sysdate not null,
id varchar2(10),
CONSTRAINT FK_ID FOREIGN KEY(id)
REFERENCES t_member(id)
);

3.2 mapper.xml

  <select id="selectAllArticlesList" resultMap="articlesResult" parameterType="java.util.Map"   >
    <![CDATA[
      	SELECT *
		FROM (SELECT ROWNUM as recNum,LVL as "level",articleNO,parentNO,title,id,writeDate,articleType,views,
					ROUND(((TO_DATE(TO_CHAR(sysdate,'YY/MM/DD HH24:MI:SS'), 'YY/MM/DD HH24:MI:SS')
							-TO_DATE(TO_CHAR(writedate, 'YY/MM/DD HH24:MI:SS'),'YY/MM/DD HH24:MI:SS'))*24*60),0) AS minDif
        		FROM (SELECT LEVEL as LVL,articleNO,parentNO,title,id,writeDate,articleType,views,
        					ROUND(((TO_DATE(TO_CHAR(sysdate,'YY/MM/DD HH24:MI:SS'), 'YY/MM/DD HH24:MI:SS')
        							-TO_DATE(TO_CHAR(writedate, 'YY/MM/DD HH24:MI:SS'),'YY/MM/DD HH24:MI:SS'))*24*60),0) AS minDif
                		FROM t_board
                		START WITH parentNO=0
                		CONNECT BY PRIOR articleNO = parentNO
                		ORDER SIBLINGS BY articleType ASC))
		WHERE recNum between(${section}-1)+(${pageNum}-1)*10+1 and (${section}-1)+${pageNum}*10
    ]]>
  </select>

3.3 BoardDAOImpl.class

	@Override
	public List<ArticleVO> selectAllArticlesList(Map<String, Object> articleMap) throws DataAccessException {
		List<ArticleVO>articlesList = sqlSession.selectList("mapper.board.selectAllArticlesList", articleMap);
		return articlesList;
	}

3.4 BoardServiceImpl.class

	@Override
	public List<ArticleVO> listArticles(Map<String, Object> articleMap) throws Exception{
		
		if(articleMap.get("section") == null) {
			articleMap.put("section", 1);
			articleMap.put("pageNum", 1);
		}
		
		int recNum = maxArticleNum();
		int pageNo = (int)Math.ceil(recNum/10d);
		int lastSection = (int)Math.ceil(pageNo/10d);
		
		articleMap.put("pageNo", pageNo);
		articleMap.put("recNum", recNum);
		articleMap.put("lastSection", lastSection);
		List<ArticleVO> articlesList =  boardDAO.selectAllArticlesList(articleMap);
        return articlesList;
	}