反射给javabean赋值

来源:互联网 发布:网络上传速度怎么设置 编辑:程序博客网 时间:2024/06/08 06:16



package org.acooly.thrift.demo.client;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.Date;import java.util.List;public class reflect {    public static void main(String[] args) throws Exception {        getBean(Student.class);    }    // 泛型方法    public static <T> List<T> getBean(Class<T> clazz) throws Exception {        ArrayList<T> list = new ArrayList<T>();        Connection con = null;        // 注册JDBC驱动,JAVA1.5以后 JDBC自动加载驱动了 所以这句代码可以省略;        Class.forName("com.mysql.jdbc.Driver").newInstance();        // 提供地址用户名密码并获得连接对象        con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test",                "root", "");                // 有Connection对象创建PreparedStatement        PreparedStatement ps = con                .prepareStatement("select * from orderitem o where o.itemid >?");        // 设置参数,参数索引位置是从1开始(Hibernate参数索引位置是从0开始)        ps.setInt(1, 10);// 过滤itemid大于10的记录        ResultSet rs = ps.executeQuery();        // 循环读取结果集的每一行的每一列        Field[] fields = clazz.getDeclaredFields();        while (rs.next()) {            // 获得无参构造对象方法创建实例            T javabean = clazz.getConstructor(new Class[] {}).newInstance();            for (Field field : fields) {                String fieldName = field.getName();                Object value = null;                System.out.println(field.getType());                System.out.println(String.class);                System.out.println(Date.class);                // 根据字段类型决定结果集中使用哪种get方法从数据中取到数据                if ((String.class).equals(field.getType())) {                    value = rs.getString(fieldName);                    if (value == null) {                        value = "";                    }                }                if (field.getType().equals(int.class)) {                    value = rs.getInt(fieldName);                }                if (field.getType().equals(Date.class)) {                    value = rs.getDate(fieldName);                }                // 获得属性的首字母并转换为大写,与setXXX对应                String firstLetter = fieldName.substring(0, 1).toUpperCase();                String setMethodName = "set" + firstLetter                        + fieldName.substring(1);                Method setMethod = clazz.getMethod(setMethodName,                        new Class[] { field.getType() });                setMethod.invoke(javabean, new Object[] { value });// 调用对象的setXXX方法            }            list.add(javabean);        }        // 关闭        con.close();        ps.close();        return list;    }}


参考文章:

http://blog.csdn.net/yu445375039/article/details/7578847


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1732029

0 0
原创粉丝点击