1. BoardDaoImpl추가
- BoardDaoImpl 클래스
@Repository
public class BoardDaoImpl implements BoardDao {
@Autowired
SqlSession session;
// 마지막에 .붙여주기
String namespace="com.fastcampus.ch4.dao.BoardMapper.";
// select
@Override
public BoardDto select(int bno) throws Exception{
return session.selectOne(namespace+"select", bno);
}
// insert
@Override
public int insert(BoardDto dto) throws Exception{
return session.insert("insert", dto);
}
@Override
public int delete(int bno, String writer) throws Exception{
Map map = new HashMap();
map.put("bno", bno);
map.put("writer", writer);
return session.delete(namespace+"delete", map);
}
@Override
public int update(BoardDto dto) throws Exception{
return session.update(namespace+"update", dto);
}
@Override
public String now(){
return session.selectOne(namespace+"now");
}
@Override
public int count(){
return session.selectOne(namespace+"count");
}
@Override
public List<BoardDto> selectAll(){
return session.selectOne(namespace+"selectAll");
}
@Override
public int increaseViewCnt(int bno){
return session.update(namespace+"increaseViewCnt", bno);
}
@Override
public int deleteAll(){
return session.delete(namespace+"deleteAll");
}
@Override
public void deleteForAdmin(){
session.delete(namespace+"deleteForAdmin");
}
@Override
public List<BoardDto> selectPage(Map map) {
return List.of();
}
@Override
public int searchResultCnt(SearchCondition sc) {
return 0;
}
@Override
public List<BoardDto> searchSelectPage(SearchCondition sc) {
return List.of();
}
}
- BoardDao 인터페이스
public interface BoardDao {
// select
BoardDto select(int bno) throws Exception;
// insert
int insert(BoardDto dto) throws Exception;
int delete(int bno, String writer) throws Exception;
int update(BoardDto dto) throws Exception;
String now();
int count();
List<BoardDto> selectAll();
int increaseViewCnt(int bno);
int deleteAll();
void deleteForAdmin();
List<BoardDto> selectPage(Map map);
int searchResultCnt(SearchCondition sc);
List<BoardDto> searchSelectPage(SearchCondition sc);
}
- boardMapper.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0/EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fastcampus.ch4.dao.BoardMapper">
<select id="now" resultType="String">
SELECT now()
</select>
<select id="count" resultType="int">
SELECT count(*) FROM board
</select>
<select id="select" parameterType="int" resultType="BoardDto">
SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date, up_date
FROM board
WHERE bno=#{bno}
</select>
<insert id="insert" parameterType="BoardDto" >
INSERT INTO board
(title, content, writer)
VALUES
(#{title}, #{content}, #{writer})
</insert>
<delete id="delete" parameterType="Map">
DELETE FROM board WHERE bno=#{bno} and writer = #{writer}
</delete>
<update id="update" parameterType="BoardDto">
UPDATE board
SET title = #{title},content = #{content}
WHERE bno=#{bno}
</update>
<select id="selectAll" resultType="BoardDto">
SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date
FROM board
ORDER BY reg_date DESC, bno DESC
</select>
<update id="increaseViewCnt" parameterType="int">
UPDATE board
SET view_cnt = view_cnt + 1
WHERE bno = #{bno}
</update>
<delete id="deleteAll">
DELETE FROM board
</delete>
<delete id="deleteForAdmin">
DELETE FROM board WHERE bno = #{bno}
</delete>
<select id="selectPage" parameterType="map" resultType="BoardDto">
SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date
FROM board
ORDER BY reg_date desc, bno desc
LIMIT #{offset}, #{pageSize}
</select>
</mapper>
- PageHandler 클래스
@ToString
@Getter
@Setter
public class PageHandler {
private int totalCnt; // 총 게시물 갯수
private int pageSize; // 한 페이지의 크기
private int navSize = 10; // 페이지 내비게이션의 크기
private int totalPage; // 전체 페이지의 갯수
private int page; // 현재 페이지
private int beginPage; // 내비게이션의 첫번째 페이지
private int endPage; // 내비게이션의 마지막 페이지
private boolean showPrev; // 이전 페이지로 이동하는 링크를 보여줄 것인지의 여부
private boolean showNext; // 다음 페이지로 이동하는 링크를 보여줄 것인지의 여부
public PageHandler(int totalCnt, int page){
this(totalCnt, page, 10);
}
public PageHandler(int totalCnt, int page, int pageSize){
this.totalCnt = totalCnt;
this.page = page;
this.pageSize = pageSize;
totalPage = (int)Math.ceil(totalCnt / (double)pageSize);
beginPage = page > 10 ? (page-1)/navSize*navSize+1 : 1;
endPage = Math.min(beginPage + navSize-1, totalPage);
showPrev = beginPage != 1;
showNext = endPage != totalPage;
}
void print(){
System.out.print("page = ");
System.out.print(showPrev ? "[PREV] " : "");
for (int i = beginPage; i <= endPage; i++) {
System.out.print(i+" ");
}
System.out.println(showNext ? "[NEXT]" : "");
}
}
- beginPage가 계속 오류라서 고쳐줬다 -> 10의 단위에서 다음 nav로 넘어가는 문제... 해결
'MyBatis' 카테고리의 다른 글
6. 게시판 읽기, 쓰기, 삭제, 수정 기능구현(2) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.03.04 |
---|---|
5. 게시판 읽기, 쓰기, 삭제, 수정 기능구현(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.03.03 |
3. 게시판 목록 만들기와 페이징/TDD (1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.27 |
2. MyBatis로 DAO작성하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.27 |
1. MyBatis의 소개와 설정 - 패스트캠퍼스 백엔드 부트캠프 3기 (1) | 2025.02.27 |