SELECT local_name localName, '대한민국' conuntry,'홍길동' worker
FROM local LIMIT 0, 1;
다음의 쿼리 결과를(select결과에 컬럼값 외 다른 정보가 추가된) 출력하고 한다면 기본적인 VO를 사용할 수가 없다(매번 새로운 VO를 만들어 사용하는건 너무 많은 VO를 만들게 된다)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "java.net.*" %>
<%@ page import = "vo.*" %>
<%@ page import = "java.util.*" %>
<%
String driver="org.mariadb.jdbc.Driver";
String dbUrl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbId = "root";
String dbPw = "java1234";
Class.forName(driver);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
conn = DriverManager.getConnection(dbUrl,dbId, dbPw);
/*
SELECT local_name localName, '대한민국' conuntry,'박성환' worker
FROM local
LIMIT 0, 1;
*/
String sql =" SELECT local_name localName, '대한민국' conuntry,'박성환' worker FROM local LIMIT 0, 1;";
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
// 부여 타입 대신에 HashMap 타입을 사용 Map 중한 하나인 HashMap
HashMap<String, Object> map = null;//ArrayList와 다르게 여러타입이 들어온다. 하나는 키를 사용할것 하나느 값 Object는 모든 참조타입이 들어올수있다.
if(rs.next()){
// 디버깅
//System.out.println(rs.getString("localName"));
//System.out.println(rs.getString("conuntry"));
//System.out.println(rs.getString("worker"));
map = new HashMap<String, Object>();
map.put("localName", rs.getString("localName"));// put 사용하기
map.put("conuntry", rs.getString("conuntry")); // map.put(키이름, 값)
map.put("worker", rs.getString("worker"));
}
System.out.println(map.get("localName")); // object로 하였기 때문에 형변환까지 해야된다((String)map.get("localName"));
PreparedStatement stmt2 = null;
ResultSet rs2 = null;
String sql2 =" SELECT local_name localName, '대한민국' conuntry,'박성환' worker FROM local";
stmt2 = conn.prepareStatement(sql2);
rs2 = stmt2.executeQuery();
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>> ();
while(rs2.next()){ // 행이 여러개이므로 어레이 리스트를 활용하여 와일문을 열어서 반복하여 만들었다.
HashMap<String, Object> m = new HashMap<String, Object>();
m.put("localName", rs2.getString("localName"));// put 사용하기
m.put("conuntry", rs2.getString("conuntry")); // map.put(키이름, 값)
m.put("worker", rs2.getString("worker"));
list.add(m);
}
PreparedStatement stmt3 = null;
ResultSet rs3 = null;
String sql3 =" SELECT local_name localName, count(local_name) cnt FROM board GROUP BY local_name";
stmt3 = conn.prepareStatement(sql3);
rs3 = stmt3.executeQuery();
ArrayList<HashMap<String, Object>> list3 = new ArrayList<HashMap<String, Object>> ();
while(rs3.next()){ // 행이 여러개이므로 어레이 리스트를 활용하여 와일문을 열어서 반복하여 만들었다.
HashMap<String, Object> m3 = new HashMap<String, Object>();
m3.put("localName", rs3.getString("localName"));// put 사용하기
m3.put("cnt", rs3.getInt("cnt")); // map.put(키이름, 값)
list3.add(m3);
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>localListByMap.jsp</title>
</head>
<body>
<table>
<tr>
<td>localName</td>
<td>conuntry</td>
<td>worker</td>
</tr>
<%
for(HashMap<String, Object> m : list){
%>
<tr>
<td><%=m.get("localName") %></td>
<td><%=m.get("conuntry") %></td>
<td><%=m.get("worker") %></td>
</tr>
<%
}
%>
</table>
<hr>
<ul>
<%
for(HashMap<String, Object> m3 : list3){
%>
<li>
<a href= "">
<%=(String)m3.get("localName")%>(<%=(Integer)m3.get("cnt")%>)</a>
</li>
<%
}
%>
</ul>
</body>
</html>