noticeBoard_1.drawio

1. 1 화면단

list.drawio

list.jpg

2. 1 구상

--게시글 구분 방식--
공지 게시글 위 고정 + 글번호 1 시작
일반 게시글 공지 밑 고정 + 글번호 1 시작

1.1 단계)[게시글 구분]
DB - 공지,일반 구분을 위한 속성 추가 (aritcleType number(1) / 0 : 공지, 1 : 일반)
MAPPER - DB에 추가한 articleType 추가
VO - int articleType 추가
DAO - mapper.board.selectAllArticlesList를 List<ArticleVO>에 저장 후 리턴
MAPPER - selectAllArticlesList의 SQL문 SELECT 절에 articleType 추가
SERVICE - DAO에서 리턴한 List<ArticleVO>를 받아 다시 리턴
CONTROLLER - service에서 List<articleVO>리턴 받은걸 List에 저장 후 ModelAndView의 
addObject를 이용해 "articlesList"라는 이름으로 List를 바인딩 해 listArticles.jsp로 보냄
JSP - controller에서 받은 "articlesList"를 JSTL core를 이용하여 조건을 줌

조건1 - articlesList.articleType의 0, 1을 구분해 게시판 위, 아래 지정
조건1.부가설명 - articleType 0을 기준으로 게시글 출력 후 articleTpye의 1인 게시글 출력
조건2 - 공지글 글번호, 일반글 글번호 서로 다르게 시작

noticeBoard_1.jpg

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 (MyBatis)

<mapper namespace="mapper.board">
<resultMap id="articlesResult" type="articleVO">
    <result property="level" column="level" />
    <result property="articleType" column="articleType" />
    <result property="articleNO" column="articleNO" />
    <result property="parentNO" column="parentNO" />
    <result property="title" column="title" />
    <result property="content" column="content" />
    <result property="writeDate" column="writeDate" />
    <result property="imageFileName" column="imageFileName" />
    <result property="views" column="views" />
  </resultMap> 
  
    <select id="selectAllArticlesList" resultMap="articlesResult"   >
    <![CDATA[
      SELECT level, articleType, articleNO, parentNO, title, content, writeDate, 
      imageFileName, id
      from t_board
      START WITH  parentNO=0
      CONNECT BY PRIOR articleNO=parentNO 
      ORDER SIBLINGS BY articleType ASC
    ]]>
  </select>