[STS Spring] 게시판 만들기 -- 04. 전체 게시글 조회(SELECT)
my code archive
article thumbnail
반응형

스프링 게시판 만들기에 수업 시간에 배운 내용을 복습하는 것보다

새로운 코드를 참고하는 게 좋을 것 같아서 아래 블로그를 참고했습니다.

언제나 좋은 글,,좋은 정리로 공부에 도움 주는 많은 분들 항상 감사합니다...😍

 

참고 블로그https://tychejin.tistory.com/24?category=765216 

 

[Spring] 게시판 만들기(14) - 게시글 조회(SELECT)

모델2 방식에 MVC(Model, View, Controller) 패턴과 관련된 파일을 추가한 후 목록을 구현하는 작업을 진행하도록 하겠습니다. Model 영역  애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는

tychejin.tistory.com

 

  • 0. 패키지 구조 잡기

 

MVC 패턴

  • Controller : DispatcherServlet에 의해 호출되어 사용자의 요청(Request)을 전달받고 처리 결과, 결과 화면 정보를 반환. @Controller, @RequestMapping, @Autowired 서비스 처리 결과를 Model에 담으면 RequestMapping 값 기준으로 DispatcherServlet이 ViewResolver를 통해 화면 URL 생성.
  • Service : Controller에 의해 호출되어 비즈니스 로직, 트랜잭션 처리. 데이터베이스 CRUD를 담당하는 DAO 객체를 주입 받아 CRUD 처리 위임하고 처리 결과를 Controller에 반환. @Service , @Transactional, @Autowired 비즈니스 로직, 트랜잭선 처리
  • DAO : Service에 의해 호출되어 CRUD 쿼리를 담당하는 SqlMapClientTemplate 객체를 주입받아서 쿼리 수행을 위임, 처리 결과를 Service에게 반환. @Repository, @Autowired SqlMapClientTemplate 통해 쿼리 수행 후 결과 반환.

 

  • 1. 스키마 & 테이블 생성

 

  • 2. BoardController.java / BoardService.java / BoardDAO.java / BoardDTO.java 작성

수업시간에는 interface - implements 형태로 작성했는데 이번에는 블로그를 참고해 다른 방식으로 작성했다.

 

  • BoardController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package net.spring.study.board.controller;
 
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
import net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
import net.spring.study.board.service.BoardService;
 
@Controller
@RequestMapping(value = "/board")
public class BoardController {
    
    @Autowired
    private BoardService boardService;
    
    @RequestMapping(value = "/boardList")
    public String getBoardList2(HttpServletRequest request, HttpServletResponse response) throws Exception{
        
        return "/board/boardList";
    }
    
    @RequestMapping(value = "/getBoardList")
    @ResponseBody
    public List<BoardDTO> getBoardList(HttpServletRequest request, HttpServletResponse response, BoardForm boardForm) throws Exception{
        List<BoardDTO> boardList = boardService.getBoardList(boardForm);
        
        return boardList;
    }
 
}
cs
  • BoardService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package net.spring.study.board.service;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import net.spring.study.board.dao.BoardDAO;
import net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
 
@Service("boardService")
public class BoardService {
 
    @Autowired
    private BoardDAO boardDAO;
    
    public List<BoardDTO> getBoardList(BoardForm boardForm) throws Exception{
        
        return boardDAO.getBoardList(boardForm);
    }
 
}
 
cs
  • BoardDAO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package net.spring.study.board.dao;
 
import java.util.List;
 
import javax.annotation.Resource;
 
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
 
import net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
 
@Repository("boardDAO")
public class BoardDAO {
 
    @Resource(name = "sqlSession")
    private SqlSession sqlSession;
    
    private static final String NAMESPACE = "mapper.board";
    
    public List<BoardDTO> getBoardList(BoardForm boardForm) {
        
        return sqlSession.selectList(NAMESPACE + ".getBoardList");
    }
 
}
 
cs
  • BoardDTO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package net.spring.study.board.dto;
 
import java.sql.Date;
import java.sql.Time;
 
/*
 * BOARD_SEQ INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '게시글 번호',
BOARD_RE_REF INT COMMENT '글의 그룹 번호',
BOARD_RE_LEV INT COMMENT '답변 글의 깊이',
BOARD_RE_SEQ INT COMMENT '답변 글의 순서',
BOARD_WRITER VARCHAR(20) COMMENT '게시글의 작성자',
BOARD_SUBJECT VARCHAR(50) COMMENT '게시글의 제목',
BOARD_CONTENT VARCHAR(2000) COMMENT '게시글의 내용',
BOARD_HITS INT UNSIGNED NOT NULL DEFAULT '0' COMMENT '게시글의 조회수',
DEL_YN VARCHAR(1) NOT NULL DEFAULT 'N' COMMENT '삭제유무',
INS_USER_ID VARCHAR(20) COMMENT '입력자ID',
INS_DATE DATETIME COMMENT '입력일시',
UPD_USER_ID VARCHAR(20) COMMENT '수정자ID',
UPD_DATE DATETIME COMMENT '수정일시'
 */
 
public class BoardDTO {
 
    private int board_seq;
    private int board_re_ref;
    private int board_re_lev;
    private int board_re_seq;
    private String board_writer;
    private String board_subject;
    private String board_content;
    private int board_hits;
    private String del_yn;
    private String ins_user_id;
    private Date ins_date;
    private String upd_user_id;
    private Date upd_date;
    
    public int getBoard_seq() {
        return board_seq;
    }
    public void setBoard_seq(int board_seq) {
        this.board_seq = board_seq;
    }
    public int getBoard_re_ref() {
        return board_re_ref;
    }
    public void setBoard_re_ref(int board_re_ref) {
        this.board_re_ref = board_re_ref;
    }
    public int getBoard_re_lev() {
        return board_re_lev;
    }
    public void setBoard_re_lev(int board_re_lev) {
        this.board_re_lev = board_re_lev;
    }
    public int getBoard_re_seq() {
        return board_re_seq;
    }
    public void setBoard_re_seq(int board_re_seq) {
        this.board_re_seq = board_re_seq;
    }
    public String getBoard_writer() {
        return board_writer;
    }
    public void setBoard_writer(String board_writer) {
        this.board_writer = board_writer;
    }
    public String getBoard_subject() {
        return board_subject;
    }
    public void setBoard_subject(String board_subject) {
        this.board_subject = board_subject;
    }
    public String getBoard_content() {
        return board_content;
    }
    public void setBoard_content(String board_content) {
        this.board_content = board_content;
    }
    public int getBoard_hits() {
        return board_hits;
    }
    public void setBoard_hits(int board_hits) {
        this.board_hits = board_hits;
    }
    public String getDel_yn() {
        return del_yn;
    }
    public void setDel_yn(String del_yn) {
        this.del_yn = del_yn;
    }
    public String getIns_user_id() {
        return ins_user_id;
    }
    public void setIns_user_id(String ins_user_id) {
        this.ins_user_id = ins_user_id;
    }
    public Date getIns_date() {
        return ins_date;
    }
    public void setIns_date(Date ins_date) {
        this.ins_date = ins_date;
    }
    public String getUpd_user_id() {
        return upd_user_id;
    }
    public void setUpd_user_id(String upd_user_id) {
        this.upd_user_id = upd_user_id;
    }
    public Date getUpd_date() {
        return upd_date;
    }
    public void setUpd_date(Date upd_date) {
        this.upd_date = upd_date;
    }
    
    
    
}
 
cs
  • BoardForm.java
  • 블로그를 참고해 보니 BoardDTO, BoardForm을 나누신 것은 [BoardDTO : mapper에서 조회한 내용] 때문이라고 하셨다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package net.spring.study.board.form;
 
import java.sql.Date;
 
public class BoardForm {
    
    private int board_seq;
    private int board_re_ref;
    private int board_re_lev;
    private int board_re_seq;
    private String board_writer;
    private String board_subject;
    private String board_content;
    private int board_hits;
    private String del_yn;
    private String ins_user_id;
    private Date ins_date;
    private String upd_user_id;
    private Date upd_date;
    
    public int getBoard_seq() {
        return board_seq;
    }
    public void setBoard_seq(int board_seq) {
        this.board_seq = board_seq;
    }
    public int getBoard_re_ref() {
        return board_re_ref;
    }
    public void setBoard_re_ref(int board_re_ref) {
        this.board_re_ref = board_re_ref;
    }
    public int getBoard_re_lev() {
        return board_re_lev;
    }
    public void setBoard_re_lev(int board_re_lev) {
        this.board_re_lev = board_re_lev;
    }
    public int getBoard_re_seq() {
        return board_re_seq;
    }
    public void setBoard_re_seq(int board_re_seq) {
        this.board_re_seq = board_re_seq;
    }
    public String getBoard_writer() {
        return board_writer;
    }
    public void setBoard_writer(String board_writer) {
        this.board_writer = board_writer;
    }
    public String getBoard_subject() {
        return board_subject;
    }
    public void setBoard_subject(String board_subject) {
        this.board_subject = board_subject;
    }
    public String getBoard_content() {
        return board_content;
    }
    public void setBoard_content(String board_content) {
        this.board_content = board_content;
    }
    public int getBoard_hits() {
        return board_hits;
    }
    public void setBoard_hits(int board_hits) {
        this.board_hits = board_hits;
    }
    public String getDel_yn() {
        return del_yn;
    }
    public void setDel_yn(String del_yn) {
        this.del_yn = del_yn;
    }
    public String getIns_user_id() {
        return ins_user_id;
    }
    public void setIns_user_id(String ins_user_id) {
        this.ins_user_id = ins_user_id;
    }
    public Date getIns_date() {
        return ins_date;
    }
    public void setIns_date(Date ins_date) {
        this.ins_date = ins_date;
    }
    public String getUpd_user_id() {
        return upd_user_id;
    }
    public void setUpd_user_id(String upd_user_id) {
        this.upd_user_id = upd_user_id;
    }
    public Date getUpd_date() {
        return upd_date;
    }
    public void setUpd_date(Date upd_date) {
        this.upd_date = upd_date;
    }
    
    
 
}
 
cs

 

분명히 블로그 참고해서 똑같이 했음에도...온갖 에러를 만난 나...ㅎ 한 2시간동안

삽질해서 겨우겨우

여기까지는 띄웠는데.....

다음과 같은 에러가 나오며 DB값을 불러오질 못한다...역시 쉽지 않군....

**해결 완료**

원인 : 스키마 생성 새로 했었는데 xml 파일에 데이터소스 입력할 때 다른 스키마 이름으로 해서 그런 거였...ㅠㅋㅋㅋ

수정했더니 잘 나온다....삽질은 제발 그만.. 

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형