jdbc 实现ActiveRecord

来源:互联网 发布:阳光终身重疾险 知乎 编辑:程序博客网 时间:2024/06/11 07:23

DBUtils.java

public class DBUtils {    private static String driverClassName;    private static String url;    private static String username;    private static String password;    public List<Record> find(String sql) {        List<Record> records = new ArrayList<>();        Statement statement;        try {            statement = getConnection().createStatement();            ResultSet resultSet = statement.executeQuery(sql);            //获取元数据            ResultSetMetaData metaData = resultSet.getMetaData();            //获取共有多少字段            int columnCount = metaData.getColumnCount();            while (resultSet.next()) {                Record record = new Record();                for (int i = 0; i < columnCount; i++) {                    //获取字段名                    String columnName = metaData.getColumnLabel(i);                    //通过字段名获取数据                    record.put(columnName, resultSet.getObject(columnName));                }                records.add(record);            }        } catch (SQLException e) {            e.printStackTrace();        }        return records;    }    public static Connection getConnection() {        try {            Class.forName(driverClassName);        } catch (ClassNotFoundException e) {            e.printStackTrace();        }        try {            return DriverManager.getConnection(url, username, password);        } catch (SQLException e) {            e.printStackTrace();        }        return null;    }}

Record.java

import java.util.HashMap;public class Record extends HashMap<String, Object> {    public Integer getInt(String col) {        return Integer.parseInt((String) this.get(col));    }}