• 通用的查询方法


    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;
            
        }
    }
  • 相关阅读:
    UVA 11198 Dancing Digits
    UVA 10085 The most distant state
    UVA 321 The New Villa
    UVA 10422 Knights in FEN
    poj2876
    poj2895
    poj2914
    poj2892
    poj2941
    LD SDK LDCControlDll 中 CXMLFile的进一步使用方法,建议以后改进
  • 原文地址:https://www.cnblogs.com/alhh/p/5542648.html
Copyright © 2020-2023  润新知