您的位置:首页 > 编程语言 > Java开发

反射给javabean赋值

2016-01-06 12:44 302 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javabean 反射赋值