public class JDBC {

  private static Connection conn=null;
    static{
      try {
        Class.forName("com.mysql.jdbc.Driver");
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      }
    }
  public Connection getConnection(){
    try {
      conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/calendar","root","root");
    } catch (SQLException e) {
      e.printStackTrace();
    }
      return conn;
    }
  public void closeConn(Connection conn,PreparedStatement ps,ResultSet rs){
    try {
      if(rs!=null){
        rs.close();
        rs=null;
      }
      if(ps!=null){
        ps.close();
        ps=null;
      }
      if(conn!=null){
        conn.close();
        conn=null;
      }
      } catch (SQLException e) {
        e.printStackTrace();
      }
  }

  //查询方法返回对象集合
  public <T>List<T> qeury(String sql,List<Object> lp,Class clazz){
    List<T> list=new ArrayList<>();
    Connection conn=getConnection();
    PreparedStatement ps=null;
    ResultSet rs=null;
    if(conn!=null){
      try {
        ps=conn.prepareStatement(sql);
        if(lp.size()>0){
          for(int i=0;i<lp.size();i++){
            ps.setObject(i+1, lp.get(i));
          }
        }
        rs=ps.executeQuery();
        while(rs.next()){
          Object obj=clazz.newInstance();
          ResultSetMetaData rm=rs.getMetaData();
          int num=rm.getColumnCount();
          if(num>0){
            for(int i=1;i<=num;i++){
              String name=rm.getColumnName(i);
              Field f=clazz.getDeclaredField(name);
              f.setAccessible(true);
              Object o=rs.getObject(i);
              f.set(obj, o);
            }
          }
          list.add((T) obj);
        }
      } catch (SQLException e) {
        e.printStackTrace();
      } catch (InstantiationException e) {
        e.printStackTrace();
      } catch (IllegalAccessException e) {
        e.printStackTrace();
      } catch (NoSuchFieldException e) {
        e.printStackTrace();
      } catch (SecurityException e) {
        e.printStackTrace();
      }finally{
        closeConn(conn, ps, rs);
      }
    }
    return list;
  }

  //更新方法(增、删、改)返回布尔类型
  public boolean update(String sql,List<Object> lp){
    boolean isFlag=false;
    Connection conn=getConnection();
    PreparedStatement ps=null;
    ResultSet rs=null;
    if(conn!=null){
      try {
        ps=conn.prepareStatement(sql);
        if(lp.size()>0){
          for(int i=0;i<lp.size();i++){
            ps.setObject(i+1, lp.get(i));
          }
        }
        int num=ps.executeUpdate();
        if(num>0){
          isFlag=true;
        }
      } catch (SQLException e) {
        e.printStackTrace();
      } catch (SecurityException e) {
        e.printStackTrace();
      }finally{
        closeConn(conn, ps, rs);
      }
    }
    return isFlag;
  }
}

2019-03-13