博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射给javabean赋值
阅读量:6119 次
发布时间:2019-06-21

本文共 2791 字,大约阅读时间需要 9 分钟。

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 
 List
 getBean(Class
 clazz) throws Exception {        ArrayList
 list = new ArrayList
();        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://gpqka.baihongyu.com/

你可能感兴趣的文章
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>