jdbc的简单封装(使用map处理结果集)

上一片篇博客中,我们在查询的时候,是采用实现IResultSetHandler这个类的handle方法来处理查询返回的数据的,但是这样做有一个缺点,查询不同的表,每次都要实现这个handle方法,增大了工作量,而且用起来也差强人意,所以这次使用map对象来处理返回的数据:

工具类的代码如下:

package JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class JDBCFunction_Map {


    //DDL操作
    public static List<Map<String,Object>>getSimpleObjs(String sql,Object...params){
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>();
        try {
            conn = JDBCUtils.getConnection();
            ps = conn.prepareStatement(sql);
            if(params != null){
                for(int i = 0 ; i < params.length ; i++){
                    ps.setObject(i+1, params[i]);
                }
            }
            rs = ps.executeQuery();
            //精髓的地方就在这里,类ResultSet有getMetaData()会返回数据的列和对应的值的信息,然后我们将列名和对应的值作为map的键值存入map对象之中...
            ResultSetMetaData  rsmd = rs.getMetaData();
            while(rs.next()){
                Map<String,Object> map = new HashMap<String,Object>();
                for(int i = 0 ; i < rsmd.getColumnCount() ; i++){
                    String col_name = rsmd.getColumnName(i+1);
                    Object col_value = rs.getObject(col_name);
                    if(col_value == null){
                        col_value = "";
                    }
                    map.put(col_name, col_value);
                }
                mapList.add(map);
            }
            return mapList;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }finally{
            JDBCUtils.close(conn, ps, rs);
        }
    }

}

下面进行简单的查询测试:
代码如下:

public static void main(String[] args) {
        String sql = "SELECT * FROM USER ";
        List<Map<String , Object>> userList = JDBCFunction_Map.getSimpleObjs(sql);
        for(int i = 0 ; i < userList.size() ; i++){
            System.out.println("user"+(i+1));
            Map<String ,Object> usermap = userList.get(i);
            for(String key : usermap.keySet()){
                System.out.println("key:"+key+"  value:"+usermap.get(key));
            }
            System.out.println("-----------------------");
        }
    }

结果如下:
结果

猜你喜欢

转载自blog.csdn.net/luciferms/article/details/78482347