使用集合来储存查询结果:
可以用list,map,list和map嵌套,list结合javabean。其中还涉及到一些嵌套集合的遍历。
1.使用Object[]来封装一条记录,使用List<Object[]>存储多条记录
public class TestORM {
public static void listObject(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Object[]> list = new ArrayList<Object[]>();
try {
conn = JDBCUtil.getMysqlConn();
String sql = "select * from u where id <?";
ps = conn.prepareStatement(sql);
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
//一个Object数组封装了一条记录的信息!
Object[] objs = new Object[3];
objs[0] = rs.getObject("name");
objs[1] = rs.getObject("pwd");
list.add(objs);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
for (Object[] objects : list) {
System.out.print(""+objects[0]+objects[1]+" ");
}
}
2.使用一个Map封装一条记录
public static void map(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Map<String, Object> m = new HashMap<String,Object>();
try {
conn = JDBCUtil.getMysqlConn();
String sql = "select * from u where id =?";
ps = conn.prepareStatement(sql);
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
m.put("name", rs.getObject("name"));
m.put("pwd", rs.getObject("pwd"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
for (String key : m.keySet()) {
System.out.println(key+"--"+m.get(key));
}
}
3.使用List<Map<String,Object>>储存多条记录
public static void listMap(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Map<String,Object>> listmap = new ArrayList<Map<String,Object>>();
try {
conn = JDBCUtil.getMysqlConn();
String sql = "select * from u where id <?";
ps = conn.prepareStatement(sql);
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
//使用一个Map封装一条记录
Map<String,Object> m = new HashMap<String,Object>();
m.put("name", rs.getObject("name"));
m.put("pwd", rs.getObject("pwd"));
listmap.add(m);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
//遍历list,得到多个map
for (Map<String, Object> map : listmap) {
//遍历Map,就是遍历这一行的多列的信息
for (String key : map.keySet()) {
System.out.print(key+"--"+map.get(key)+" ");
}
System.out.println();
}
}
4.使用Map<String, Map<String, Object>>储存多条记录
public static void mapMap(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Map<String, Map<String, Object>> mm = new HashMap<String, Map<String, Object>>();
try {
conn = JDBCUtil.getMysqlConn();
String sql = "select * from u where id <?";
ps = conn.prepareStatement(sql);
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
//使用一个Map封装一条记录
Map<String,Object> m = new HashMap<String,Object>();
m.put("name", rs.getObject("name"));
m.put("pwd", rs.getObject("pwd"));
mm.put((String) rs.getObject("name"), m);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
//先遍历外面map,得到里面的map
for (String name : mm.keySet()) {
Map<String,Object> m = mm.get(name);
//再遍历得到的map,通过先获取所有的键,再通过键得到值
for (String key : m.keySet()) {
System.out.print(key+"--"+m.get(key)+" ");
}
System.out.println();
}
}
5.使用list结合javabean储存查询数据
public static void listJavabean(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<U> list = new ArrayList<U>();
try {
conn = JDBCUtil.getMysqlConn();
String sql = "select * from u where id <?";
ps = conn.prepareStatement(sql);
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
//声明U对象
U u = new U(rs.getString("name"),rs.getDate("regTime"));
list.add(u);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
for (U u : list) {
System.out.println(u.getName()+"--"+u.getRegTime());
}
}