JSP底层方法的封装

之前在写JSP三层代码的时候,封装了一个BaseDao的工具类,包含executeQuery()方法、executeUpdate()方法。每个Dao层的方法都会把结果集进行再次的封装,为了减轻代码的冗余,就对这些方法进行的封装,并且根据模型直接返回一个结果集。

    public  <T> List<T>  findModelListBySqlAndParam(String sql,List<Object> param,T t)  {
        //定义一个集合来存放需要转成的对象集合
        List<T> list=new ArrayList<T>();
        //获取当前类
        Class<?> c=t.getClass();
        //遍历结果集,封装成外界用户所需要的对象集合
        //1>获取结果集
        ResultSet rs=executeQuery(sql, param);
        //2>开始遍历
        try {
            while(rs.next()){
                //初始化对象
                T obj= (T)c.newInstance();
                //获取当前类一共多少个属性啊
                Field[] fields=c.getDeclaredFields();
                for(Field f:fields){
                    //获取当前属性的属性名子
                    String fname=f.getName();
                    //获取当前的属性的类型(简称)  java.lang.String
                    String type=f.getType().getSimpleName();

                    //*****************  取出来当前属性对应的数据库的值了 ****************
                    Object value=null;
                    if(type.equalsIgnoreCase("string")){
                        value=rs.getString(fname);
                    }else if(type.equalsIgnoreCase("int")){
                        value=rs.getInt(fname);
                    }else if(type.equalsIgnoreCase("Integer")){
                        value=rs.getInt(fname);
                    }else if(type.equalsIgnoreCase("Double")){
                        value=rs.getDouble(fname);
                    }else if(type.equalsIgnoreCase("Float")){
                        value=rs.getFloat(fname);
                    }else if(type.equalsIgnoreCase("date")){
                        value=rs.getDate(fname);
                    }else if(type.equalsIgnoreCase("long")){
                        value=rs.getLong(fname);
                    }
                    //*****************  将取出来当前属性的值设置给当前对象obj****************
                    //1>获取当前对象的所有set方法,并找到当前取出来的属性对应的set方法
                    Method[] methods=c.getDeclaredMethods();
                    for(Method m:methods){
                        //获取当前方法名
                        String methodName=m.getName();
                        //判断是不是当前属性
                        if(methodName.equalsIgnoreCase("set"+fname)){
                            //执行该方法
                            m.invoke(obj, value);
                        }
                    }
                }
                list.add(obj);
                
            }
        }  catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }

 

转载于:https://www.cnblogs.com/1960366876tZ/p/9164776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值