noticeBoard_1.drawio
1. 1 화면단
list.drawio

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 - 공지글 글번호, 일반글 글번호 서로 다르게 시작

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)
);
- 기존 t_board 테이블에 articleType number(1) 추가
- articleType : 공지글과 일반글을 구분하기 위한 속성
- articleType : 0 = 공지글, 1 = 일반글
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>
- <mapper namespace=”mapper.board”> : BoardDAO에서 mapper를 찾기위한 이름 지정
- <resultMap id=”articlesResult” type=”articleVO”>
- <result property=key column=value /> : key에 value값 저장
- 기존 조회 쿼리문에서 SELECT절에 articleType 추가