标签:反射赋值javabean
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
标签:反射赋值javabean
原文地址:http://tianxingzhe.blog.51cto.com/3390077/1732029