[Board+페이징추가]2021.01.21

11481 단어 SpringSpring

게시판 페이징 처리하기

1. (soo.md.sql) Board.spl 실행


public class BoardSQL {
	public static final String SELECT = "select * from BOARD order by SEQ desc";
	public static final String INSERT = "insert into BOARD values(BOARD_SEQ.nextval, ?, ?, ?, ?, SYSDATE)";
	public static final String CONTENT = "select * from BOARD where SEQ=?";
	public static final String DEL =
			"delete from BOARD where SEQ=?";
	public static final String UPDATE1 = "select * from BOARD where SEQ=?";
	public static final String UPDATE2 = "update Board set WRITER=?, EMAIL =?, SUBJECT=?, CONTENT=? where SEQ=?";
}

-> public static final 붙여주는거 잊지말기.

2. (soo.md.domain) Board.java

-게시판 기본적인 내용 get/set 정리

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Board {
	private long seq;
	private String writer;
	private String email;
	private String subject;
	private String content;
	private Date rdate;
}

3. (src/test/resources) mybatis-config.xml

수정하여 동적태그 활성화시키기,알리아스 주기(경로가 기니까)

 <typeAliases>
   	   <typeAlias alias="Board" type="soo.md.domain.Board"/>
   	   <typeAlias alias="BoardVo" type="soo.md.domain.BoardVo"/>
   	   <typeAlias alias="BoardListResult" type="soo.md.domain.BoardListResult"/>
   </typeAliases>
   <mappers>
   	   <mapper resource="soo/md/mapper/BoardMapper.xml"/>
   </mappers>

4. (soo.md.domain) BoardVo.java 생성->

파라미터를 여러개 담을 수 있도록 한다, 알라이스 주기(mabatis에)

@NoArgsConstructor
@AllArgsConstructor
public class BoardVo {
	String keyword;
	
	private int cp;
	private int ps;
	{
		cp=1;
		ps=5;
	}
	
	public int getStartRow() {
		return (cp-1) * ps; //ex) 0 * 5 = 0
	}
	public int getEndRow() {
		return cp * ps; //ex) 1 * 5 = 5
	}

5. (soo.md.mapper) BoardMapper.java ->인터페이스로 메소드활용하여 mapping 해준다. with BoardMapper.xml(sql 동적태그 작성부분)

//junit 테스트 해주기

public interface BoardMapper {
	List<Board> selectPerPage(BoardVo boardVo);
	long selectCount();
	void insert(Board board);
	Board content(long seq);
	void delete(long seq);
	Board update1(long seq);
	void update2(Board board);
	List<Board> list();
}
<mapper namespace="soo.md.mapper.BoardMapper">
	<select id="selectPerPage" resultType="Board" parameterType="BoardVo">
 	 <![CDATA[
 	 select * from (select ROWNUM rnum, aa.* from (select * from BOARD order by SEQ desc) aa)
 	 where rnum>#{startRow} and rnum<=#{endRow}
 	 ]]>
 	 </select>
 	 <select id="selectCount" resultType="long">
 	 select count(SEQ) from BOARD
 	 </select>
	
	<select id="list" resultType="Board">
	select * from board order by seq desc
	</select>

6. (soo.md.domain) BoardListResult.java

-> get/set 정리 및 게시판전체결과값(totalCount, cp, ps, list)
에대한 생성자 생성

public class BoardListResult {
	private int cp;
	private long totalCount;
	private int ps;
	private List<Board> list;
	private long totalPageCount;
	
	public BoardListResult(int cp, long totalCount, int ps, List<Board> list) {
		this.cp = cp;
		this.totalCount = totalCount;
		this.ps= ps;
		this.list = list;
		this.totalPageCount = calTotalPageCount();
		
	}
	private long calTotalPageCount() {
		long tpc= totalCount/ps;
		if(totalCount%ps !=0) tpc++;
		
		return tpc;
	}

7. (soo.md.service) BoardService.java

-> 위에 생성한 BoardListResult.java 부분의생성자를 활용한 getBoardListResult(int cp, int ps);메소드 실행 한다. 더불어 select, insert, content, delete, update 메소드 생성,
인터페이스 생성!

public interface BoardService {
	BoardListResult getBoardListResult(int cp, int ps);
	//Board getBoard(long seq);//content
	
	List<Board> listS();
	void insertS(Board board);
	Board contentS(long seq);
	void deleteS(long seq);
	Board update1S(long seq);
	void update2S(Board board);

8. (soo.md.service) BoardServicelmpl.java

-> BoardService 상속받아 메소드 오버라이딩.

@Service("boardService")
public class BoardServiceImpl1 implements BoardService {
	@Resource
	private BoardMapper boardMapper;//Spring 4.3 ~: AutoInjection (with @AllArgsConstructor ) 
	
	@Override
	public BoardListResult getBoardListResult(int cp, int ps) {
		long totalCount = boardMapper.selectCount();
		BoardVo boardVo = new BoardVo(null, cp, ps);
		List<Board> list= boardMapper.selectPerPage(boardVo);
		
		return new BoardListResult(cp, totalCount, ps, list);
	}

	@Override
	public void insertS(Board board) {
		boardMapper.insert(board);
	}

9. (soo.md.controller) BoardController.java

-> @Resourse(name="BoardService")로 내용값 확인 하여 메소드 실행 및 view.jsp 연결.

@Controller
@RequestMapping("/board2/*")
public class BoardController2 {
	//@Autowired
	@Resource(name="boardService")
	private BoardService service;
	
	@GetMapping("/list.do")
	public ModelAndView list(HttpServletRequest request, HttpSession session) {
		String cpStr = request.getParameter("cp");
		String psStr = request.getParameter("ps");


좋은 웹페이지 즐겨찾기