欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

泛型类反射封装结果集,泛型反射封装,简化JDBC结果集封装。

来源: javaer 分享于  点击 24598 次 点评:127

泛型类反射封装结果集,泛型反射封装,简化JDBC结果集封装。


简化JDBC结果集封装。

通过反射方法封装数据。

使用泛型,更通用。

/** * @param args */public static void main(String[] args) {    String sql="select * from user where name=1";    try {        User user=BaseDao.getClass(sql, User.class);        System.out.println(user.getName());    } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}          /** * 使用泛型类封装查询结果 * @param <T> * @throws Exception  */public static <T> T getClass(String sql, Class<T> clazz) throws Exception {    PreparedStatement ps = null;    ResultSet rs = null;    Connection con=JDBCUtil.getConnection();    ps=con.prepareStatement(sql);    rs=ps.executeQuery();    //结果集的字段    ResultSetMetaData md=rs.getMetaData();    //将字段添加到string数组    String[] mdString=new String[md.getColumnCount()];    for(int i=0;i<md.getColumnCount();i++) {        mdString[i]=md.getColumnLabel(i+1);    }    //声明一个泛型类    T t=null;    //获得传入类的方法集合    Method[] methods=clazz.getMethods();    if(rs.next()) {        t=clazz.newInstance();        for(int j=0;j<mdString.length;j++) {            String clsMethod=mdString[j];            //将结果集的字段首字母替换成大写并且以set开头(例:setName对象类里面的set方法)            clsMethod="set"+clsMethod.replaceFirst(clsMethod.substring(0,1), clsMethod.substring(0, 1).toUpperCase());            for(Method m:methods) {                //匹配传入类的方法集合如果匹配成功则执行。                if(clsMethod.equals(m.getName())) {                    m.invoke(t, rs.getObject(j+1));                }            }        }    }    return t;}//该片段来自于http://byrx.net
相关栏目:

用户点评