反射给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
相关文章推荐
- JSP教程之使用JavaBean完成业务逻辑的方法
- JSP学习之JavaBean用法分析
- JSP+Servlet+JavaBean实现登录网页实例详解
- jsp中使用javabean实例介绍
- jsp+servlet+javabean实现数据分页方法完整实例
- spring实例化javabean的三种方式分享
- 对javaBean的一些操作
- 2014年 代码总结与疑问
- 2014年 代码总结与疑问(二)
- JSP第五课:JSP+JavaBean实现用户注册登录
- Web应用系统开发课程(Jsp程序设计)资源列表
- javabean
- javabean与ejb的区别
- 反射 javabean 代理 类加载
- 什么是JavaBean? -----------有趣的回答
- 在AXIS服务间传递JavaBean
- JavaBean 反射机制实现自动配置数据
- JAXB 解决XML与JavaBean的互换
- JavaBean
- XML与JAVABEAN序列化与反序列化的三方框架:Simple framework