다음과 같이 subject 테이블과 attend 테이블을 조인해서 데이터를 가져온다
(rownum은 페이징 처리를 위해서 사용. dao의 sql문 안에서는 ? 로 대체하고 인자값으로 endRow와 startRow가 들어감)
1
2
3
4
5
6
7
8
9
|
select * from
(select aa.*, rownum rn from
(select a.subno, a.subname, a.teachername, s.cnt, count(a.subno) currentCnt, a.status
from attend a
join subject s
on s.subno = a.subno
where stuno = 'USER1'
group by a.subno, a.subname, a.teachername, s.cnt, a.status) aa
where rownum<=5) where rn>=1;
|
cs |
보통 jsp에서 <table> <tr> <td> 에 값을 뿌릴때는 List<vo클래스> 로 add해서 뿌렸었는데..
저렇게 조인으로 가져오면 단일 vo클래스가 아니므로 그 방법은 사용할 수 없다.
인터넷 서치하니까 아예 vo를 또 만들던지 map을 사용하라는데.. vo를 만드는건 스프링할때 해봤으니까 map으로 사용.
- DAO.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
|
public List<Object> myAttendPre(int startRow, int endRow, String userno){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Object> list = new ArrayList<>();
try {
conn = getConnection();
String sql = "select * from "
+ "(select aa.*, rownum rn from "
+ "(select a.subno, a.subname, a.teachername, s.cnt, s.submemo, count(a.subno) currentCnt, a.status "
+ "from attend a "
+ "join subject s "
+ "on s.subno = a.subno "
+ "where stuno = '"+userno+"' "
+ "group by a.subno, a.subname, a.teachername, s.cnt, s.submemo, a.status) aa "
+ "where rownum<=?) where rn>=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, endRow);
pstmt.setInt(2, startRow);
rs = pstmt.executeQuery();
while(rs.next()){
Map<String, String> hm = new HashMap<>();
hm.put("status", Integer.toString(rs.getInt("status")));
hm.put("subno", rs.getString("subno"));
hm.put("subname", rs.getString("subname"));
hm.put("teachername", rs.getString("teachername"));
hm.put("cnt", Integer.toString(rs.getInt("cnt")));
hm.put("currentCnt", rs.getString("currentCnt"));
list.add(hm);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(conn, pstmt, rs);
}
return list;
}
|
cs |
맵을 while문 바깥에 선언하게 되면 당연히 key값 (status, subno, subname 등..) 이 같으므로 value값이 덮어쓰기 된다.
list에 담고나면 컨트롤러에서 model에 담고 jsp에서 원래 하던대로 el태그 안에 뿌리면 된다..
'Learning > JSP' 카테고리의 다른 글
게시판 파일 입력하기 (0) | 2021.03.16 |
---|---|
checkbox에서 유저의 메일주소를 가져온 뒤 자바메일 발송하기 (javax.mail) (0) | 2021.03.16 |
안드로이드 어플 만들기 프로젝트 (Moodtracker) (0) | 2020.10.30 |
포털사이트에서 필요한 정보 출력하기 (jsoup select) (0) | 2020.08.21 |
주소록 만들기2 (0) | 2020.08.21 |