[Board+페이징추가]2021.01.21
게시판 페이징 처리하기
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");
Author And Source
이 문제에 관하여([Board+페이징추가]2021.01.21), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinheesung/Board페이징추가2021.01.21저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)