使用集合来储存查询结果

使用集合来储存查询结果:

      可以用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());
           }
     }

猜你喜欢

转载自blog.csdn.net/FRMNZR/article/details/89841091