zoukankan      html  css  js  c++  java
  • 通用的查询方法

    package exercise;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.mysql.jdbc.ResultSetMetaData;
    
    public class TestJdbc {
        public static void main(String[] args) {
            
            String sql="select Flow_ID FlowID,Type,ID_Card IDCard,Exam_Card ExamCard"+"Student_Name StudentName,Location,Grade from examstudent where Flow_Id=?";
            Student stu= get(Student.class,sql,1);
            System.out.println(stu);
            
            
            //sql=" select FlowID,Type,IDCard,ExamCard"+"StudentName,Location,Grade from examstudent where FlowId=?";
        }
        public static <T> T get(Class<T> clazz, String sql,Object...args){
            T entity=null;
            Student stu=null;
            Connection connection=null;
            PreparedStatement preparedStatement=null;
            ResultSet rs=null;
            try {
            
                Class.forName("com.mysql.jdbc.Driver");
                 connection=DriverManager.getConnection//
                        ("jdbc:mysql://localhost:3306/test", "root", "123456");
                
                 preparedStatement=connection.prepareStatement(sql);
                 for(int i=0;i<args.length;i++){
                     preparedStatement.setObject(i+1, args[i]);
                 }
                rs= preparedStatement.executeQuery();
                //创建一个Map对象 键:列的别名 值:列的值
                Map<String, Object> values=new HashMap<String,Object>();
    
                //得到ResultSetMetaData对象
                ResultSetMetaData rsmd=(ResultSetMetaData) rs.getMetaData();
                //处理结果集,填充map对象
                while(rs.next()){
                    for(int i=0;i<rsmd.getColumnCount();i++){
                        String columnLabel=rsmd.getColumnLabel(i+1);
                        //为键和值 赋值,并放在values里面
                        Object columnValues=rs.getObject(columnLabel);
                        values.put(columnLabel, columnValues);
                    }
                }
                //遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.
                if(values.size()>0){
                    entity=clazz.newInstance();
                
                for(Map.Entry<String, Object> entry: values.entrySet()){
                    String FieldName=entry.getKey();
                    Object FieldValues=entry.getValue();
                    ReflectionUtils.setFieldValue(entity, FieldName, FieldValues);
                }
            }
                System.out.println(entity);
            
            if(rs.next()){
                entity=(T) clazz.newInstance();
                
                stu.setFlowID(rs.getInt(1));
                stu.setType(rs.getString(2));
                stu.setIDCard(rs.getString(3));
                stu.setExamCard(rs.getString(4));
                stu.setStudentName(rs.getString(5));
                stu.setLocation(rs.getString(6));
                stu.setGrade(rs.getInt(7));
            }
        }
            
        catch (Exception e) {
                
                e.printStackTrace();
            }finally{
                if(preparedStatement!=null){
                    try {
                        preparedStatement.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }finally{
                        if(connection!=null){
                            try {
                                connection.close();
                            } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }
                }
        }
            return entity;
            
        }
    }
  • 相关阅读:
    Flash 9/Flash CS 3 HTTP Post 请求Web Service by .net
    Custom Draw
    [转]NDIS开发[网络驱动开发]
    http header详解
    [MSDN]用 SQL Server 2005中的 CLR 集成
    JSF 页面之间传值
    [转]采用HttpModules来重写URLs(实践篇)
    [转]聚集索引和非聚集索引(sql server索引结构及其使用)
    [转]使用showModalDialog打开模态窗口添加数据后刷新原窗口
    ASP.Net中自定义Http处理及应用之HttpHandler篇
  • 原文地址:https://www.cnblogs.com/alhh/p/5542648.html
Copyright © 2011-2022 走看看