1-1 : 필요한 객체 자동으로 생성해주는 어노테이션으로 가져오기
@Autowired(required=false)
private BoardService boardService;
@Autowired(required=false)
private PageMaker pm;
1-2 : 메서드와 연결하기 위해 requestMapping 어노테이션 사용
여기는 리스트 들어왔을 때 작동해야할 메서드들 추가해주기 (5번에서)
@RequestMapping(value="boardList.aws")
public String boardList() {
return null;
}
2-1 인터페이스 생성하고 메서드 작성
public interface BoardService {
public ArrayList<BoardVo> boardSelectAll(searchCriteria scri);
public int boardTotalCount(searchCriteria scri);
}
3-1 mapper.xml 파일에서 메서드 실행할 sql 작성
<select id = "boardSelectAll" parameterType="HashMap" resultType="bv"> <!-- resultType="mv" >> 여러개 담기 하나를 담아도 mv로 담아오자 -->
SELECT * FROM board where delyn='N'
<include refid = "search"/>
ORDER BY originbidx desc, depth asc limit #{startPageNum}, #{perPageNum}
</select>
<select id ="boardTotalCount" parameterType="scri" resultType="int" >
SELECT count(*) as cnt FROM board where delyn='N'
<include refid = "search"/>
</select>
3-2 검색기능 구현할 sql 쿼리문 작성
<sql id = "search">
<if test="searchType != null and searchType.equals('writer')">
and writer like concat('%',#{keyword},'%')
</if>
<if test="searchType != null and searchType.equals('subject')">
and subject like concat('%',#{keyword},'%')
</if>
</sql>
4-1 : mybatis 와 연동
public class BoardServiceImpl implements BoardService {
private BoardMapper bm; // 매퍼클래스
@Autowired // 객체생성 어노테이션
public BoardServiceImpl(SqlSession sqlSession) {
this.bm = sqlSession.getMapper(BoardMapper.class);
}
4-2 override 는 class 이름에 레드라인 들어오면 add 하기
add 하면 처음 나오는 코드
@Override
public ArrayList<BoardVo> boardSelectAll(searchCriteria scri) {
// TODO Auto-generated method stub
return null;
}
작성해둔 메서드 모두 추가해주고 고칠 부분 고치기
@Override
public ArrayList<BoardVo> boardSelectAll(searchCriteria scri) {
HashMap<String,Object> hm = new HashMap<String,Object>();
hm.put("startPageNum", (scri.getPage()-1)*scri.getPerPageNum());
hm.put("searchType",scri.getSearchType());
hm.put("perPageNum",scri.getPerPageNum());
hm.put("keyword",scri.getKeyword());
ArrayList<BoardVo> blist = bm.boardSelectAll(hm);
return blist;
}
@Override
public int boardTotalCount(searchCriteria scri) {
int cnt = bm.boardTotalCount(scri);
return cnt;
}
}
5-1 : 1-2 에서 작성했던 @RequestMapping 아래에 완성된 메서드 호출해주기
@RequestMapping(value="boardList.aws")
public String boardList() {
return null;
}
@RequestMapping(value="boardList.aws") // 목록에서 처리해야할 부분 1. 글목록 2. 페이지 3. 검색 4.
//boardList.aws 이 값이 넘어오면 연결해줄 메서드 매핑해주기
public String boardList(searchCriteria scri, Model model) {
// 파라미터값은 scri 랑 model을 받는다
int cnt = boardService.boardTotalCount(scri);
// boradService 안에 있는 boardTotalCount 메서드 실행하고 결과값을 cnt 에 담는다
pm.setScri(scri);
pm.setTotalCount(cnt);
//pm 안에있는 scri 랑 TotalCount를 새로 담는다
ArrayList<BoardVo> blist = boardService.boardSelectAll(scri);
// blist 에 board
model.addAttribute("blist", blist);
model.addAttribute("pm", pm);
String path="WEB-INF/board/boardList";
return path;
}
pm, blist 는 list 페이지에서 사용