日期:2014-05-16  浏览次数:20519 次

jdbc通用的一个方法




/**
     * 通过ResultSet构建一个指定类型的对象
     *
     * @param <T>
     * @param clazz
     * @param rs
     * @return
     */
    private <T> T buildObject(Class<T> clazz, ResultSet rs) {
        if (rs == null) {
            return null;
        }

        T object = null;

        try {
            // 通过默认构造方法创建一个新的对象
            object = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
            // 获得对象的所有属性
            Field[] fields = clazz.getDeclaredFields();
            for (int i = 0; i < fields.length; i++) {
                // 获取属性名称
                String fieldName = fields[i].getName();
                // 获取属性名称的首字母,并将该字母转为大写形式
                String firstLetter = fieldName.substring(0, 1).toUpperCase();
                // 获得和属性对应的setXXX()方法的名字
                String setMethodName = "set" + firstLetter + fieldName.substring(1);
                // 获得和属性对应的setXXX()方法
                Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields[i].getType() });
                // 调用目标对象的setXXX()方法对其属性赋值
                setMethod.invoke(object, new Object[] { rs.getObject(fieldName.toLowerCase()) });
            }
        } catch (Exception e) {
            e.printStackTrace();
            object = null;
        }

        return object;
    }