• 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;
        }
  • 相关阅读:
    Shell xargs
    I2C总线图
    JS判断输入的字符串是否为数字
    CDN
    ④.linux基础之"字符集"
    01创建证书和环境准备
    梦的蒲公英
    java web项目部署遇到的jar cannot read的问题
    textbox icon jquery 插件
    解决双硬盘安装windows出现“安装程序无法定位现有系统分区,也无法创建新的系统分区”错误
  • 原文地址:https://www.cnblogs.com/1960366876tZ/p/9164776.html
Copyright © 2020-2023  润新知