zoukankan      html  css  js  c++  java
  • Java工具类 通过ResultSet对象返回对应的实体List集合

    摘自:http://www.cnblogs.com/lsy131479/p/9037786.html

    自从学了JDBC用多了像一下这种代码:

     
    复制代码
    ResultSet rs = this.executeQuery(sql, objs);
    List<xxx> list = new Array<xxx>();
    if(rs.next()){
    xxx x = new xxx();
    x.setxxx(rs.getString("xxx"));
    x.setsss(rs.getString("sss"));
    list.add(x);
    }
    复制代码

    这类相似的代码每天都在用,每天都在copy,相信大家早就已经烦了

    今天!Today!Java程序员的福利来了

    最近生病在家闲着无聊写了一个工具类:

      通过传入一个

      ResultSet对象和相应的实体类对象。可返回相应的List集合

      终于不用Ctrl+c  Ctrl+v了!!!!

    用到技术:

      Java反射机制

      泛型类

    实现思路:

      首先既然是工具类当然要做到 高可用,不然也没什么意义

      既然是通过一个ResultSet对象来返回一个实体集合,是个人都可以想到这个实体类一定是个不确定因素。

      ok , 想到 的是泛型类,定义一个虚拟类型T , 传参进来确切类型后然后通过反射来获得这个类的一系列信息

      然后进入赋值+list.add()操作

    我给这个工具类起名叫:DBRsHelp  (发现自己命名水准越来越高了  小小自恋一下下())

    废话不多说,上栗子(命名不规范,勿喷):

    复制代码
    package cn.news.util;
    
    import java.lang.reflect.Field;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import cn.news.dao.BaseDAO;
    import cn.news.entity.Users;
    
    /**
     * 
     * @author: 房上的猫
     * 
     * @time: 下午3:49:32
     * 
     * @博客地址: https://www.cnblogs.com/lsy131479/
     *
     */

    //泛型类,T:虚拟类型 public class DBRsHelp<T> { public List<T> util(T t, ResultSet rs) throws Exception { // 创建一个对应的空的泛型集合 List<T> list = new ArrayList<T>(); // 反射出类类型(方便后续做操作) Class c = t.getClass(); // 获得该类所有自己声明的字段,不问访问权限.所有。所有。所有 Field[] fs = c.getDeclaredFields(); // 大家熟悉的操作,不用多说 if (rs != null) { while (rs.next()) { // 创建实例 t = (T) c.newInstance(); // 赋值 for (int i = 0; i < fs.length; i++) { /* * fs[i].getName():获得字段名 * * f:获得的字段信息 */ Field f = t.getClass().getDeclaredField(fs[i].getName()); // 参数true 可跨越访问权限进行操作 f.setAccessible(true); /* * f.getType().getName():获得字段类型的名字 */ // 判断其类型进行赋值操作 if (f.getType().getName().equals(String.class.getName())) { f.set(t, rs.getString(fs[i].getName())); } else if (f.getType().getName().equals(int.class.getName())) { f.set(t, rs.getInt(fs[i].getName())); } } list.add(t); } } // 返回结果 return list; }   


      //测试一下下 public static void main(String[] args) throws Exception { DBRsHelp<Users> util = new DBRsHelp<Users>(); Users u = new Users(); String sql = "select * from news_users"; BaseDAO dao = new BaseDAO(); dao.rs = dao.executeQuery(sql); List<Users> util1 = util.util(u, dao.rs); for (Users users : util1) { System.out.println("uname:" + users.getUname()); System.out.println("upwd:" + users.getUpwd()); System.out.println("ustart:" + users.getUstate()); System.out.println("usessionid:" + users.getUsessionid()); System.out.println("================================================"); } } }
    复制代码

    成功!!!哈哈哈

  • 相关阅读:
    关于范型
    c#.net实体类序列化方法  为什么要序列化
    游标示例
    干掉switch语句
    java面向对象总结(一)
    Java泛型简明教程(转)
    java 成员变量、局部变量、静态变量
    Java 集合类图(转)
    java泛型(擦除)
    java垃圾回收
  • 原文地址:https://www.cnblogs.com/GaoAnLee/p/9039456.html
Copyright © 2011-2022 走看看