栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 使用策略模式操作JDBC数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 使用策略模式操作JDBC数据库

java 使用策略模式操作JDBC数据库

1:构造一个操作数据库的工具类,可以获得连接和释放连接

public class DBUtil { 
  private static Connection conn = null; 
  static { //静态初始块 
      try { 
 Class.forName("com.mysql.jdbc.Driver"); 
 conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "064319"); //初始化获取连接 
      } catch (ClassNotFoundException e) { 
 e.printStackTrace(); 
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } 
  } 
 
   
  public static void closeAll(ResultSet rs, PreparedStatement psmt, Connection conn) throws SQLException { 
     
    if(rs != null) { 
      rs.close(); 
    }  
     
    if(psmt != null) { 
      psmt.close(); 
    } 
     
    if(conn != null) { 
      conn.close(); 
    } 
     
  } 
   
   
  public static Connection getConnection() { 
    return conn; 
  } 
   
   
  public static void getTableColumnInfoByTableName(String tableName) { 
    Connection conn = getConnection(); 
    ResultSet rs = null; 
    PreparedStatement psmt = null; 
    String sql = "select * from " + tableName; 
    try { 
      psmt = conn.prepareStatement(sql); 
      rs = psmt.executeQuery(); 

      ResultSetmetaData resultSetmetaData = rs.getmetaData(); 
      for(int i = 1; i<= resultSetmetaData.getColumnCount(); i++) { 
 System.out.println(resultSetmetaData.getColumnName(i)); 
      } 

    } catch (SQLException e) { 
      e.printStackTrace(); 
    } finally { 
      try { 
 closeAll(rs, psmt, conn); 
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } 
    } 
  } 
   
   
  public static void getTableInfoByTableName(String tableName) { 
    Connection conn = getConnection(); 
    PreparedStatement psmt = null; 
    ResultSet rs = null; 
    String sql = "select * from " + tableName; 
    try { 
      psmt = conn.prepareStatement(sql); 
      rs = psmt.executeQuery(); 

      while(rs.next()) { 
 ResultSetmetaData resultSetmetaData = rs.getmetaData(); 
 for(int i = 1; i<= resultSetmetaData.getColumnCount(); i++) { 
   if(i < resultSetmetaData.getColumnCount()) { 
     System.out.print(rs.getObject(resultSetmetaData.getColumnName(i)) + ", "); 
   } else { 
     System.out.print(rs.getObject(resultSetmetaData.getColumnName(i))); 
   } 
 } 
 System.out.println(); 
      } 
     
    } catch (SQLException e) { 
      e.printStackTrace(); 
    } finally { 
      try { 
 closeAll(rs, psmt, conn); 
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } 
    } 
  } 
} 

2:构造一个操作数据库的baseDao类

public class baseDao { 
   
   
  protected boolean saveOrUpdate(String sql, Object[] params) { 
    Connection conn = null; 
    PreparedStatement psmt = null; 
    boolean flag = false; 
     
    conn = DBUtil.getConnection(); 
    if(conn != null) { 
      try { 
 psmt = conn.prepareStatement(sql); 
 for(int i = 1; i <= params.length; i++) { 
   psmt.setObject(i, params[i-1]); 
 } 
 if(psmt.executeUpdate() > 0) { 
   flag = true; 
 } 
  
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } finally { 
 try { 
   DBUtil.closeAll(null, psmt, conn); 
 } catch (SQLException e) { 
   e.printStackTrace(); 
 } 
      } 
    }  
    return flag; 
  } 
   
   
  public Object queryForObject(String sql, Object[] params, RowMapForObject rowMapForObject) { 
    Connection conn = null; 
    PreparedStatement psmt = null; 
     
    conn = DBUtil.getConnection(); 
    Object obj = null; 
    ResultSet rs = null; 
     
    if(conn != null) { 
      try { 
 psmt = conn.prepareStatement(sql); 
 if(params != null && params.length > 0) { 
   for(int i = 1; i <= params.length; i++) { 
      psmt.setObject(i, params[i - 1]); 
   } 
 } 
 rs = psmt.executeQuery(); 
 obj = rowMapForObject.rowMapForObject(rs); 
  
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } finally { 
 try { 
   DBUtil.closeAll(null, psmt, conn); 
 } catch (SQLException e) { 
   e.printStackTrace(); 
 } 
      } 
    } 
     
    return obj; 
  } 
 
   
   
  public List queryForList(String sql, Object[] params, RowMapForList rowMapForList) { 
    Connection conn = null; 
    PreparedStatement psmt = null; 
     
    conn = DBUtil.getConnection(); 
    List list = null; 
    ResultSet rs = null; 
     
    if(conn != null) { 
      try { 
 psmt = conn.prepareStatement(sql); 
 if(params != null && params.length > 0) { 
   for(int i = 1; i <= params.length; i++) { 
      psmt.setObject(i, params[i - 1]); 
   } 
 } 
 rs = psmt.executeQuery(sql); 
 list = new ArrayList(); 
 list = rowMapForList.rowMapForList(rs); 
  
      } catch (SQLException e) { 
 e.printStackTrace(); 
      } finally { 
 try { 
   DBUtil.closeAll(null, psmt, conn); 
 } catch (SQLException e) { 
   e.printStackTrace(); 
 } 
      } 
    } 
     
    return list; 
  } 
   
} 

3:新建一个StudentDao类,该类继承自baseDao,实现对Student的管理

public class StudentDao extends baseDao { 
 
   
  public boolean saveStudent(Student student) { 
    String sql = "insert into t_student(name, age) values(?, ?)"; 
    Object[] params = new Object[]{student.getName(), student.getAge()}; 
    return super.saveOrUpdate(sql, params); 
  } 
   
   
  public Student getStudentById(long id) { 
    String sql = "select * from t_student where id=?"; 
    Object[] params = new Object[]{id}; 
    return (Student)super.queryForObject(sql, params, new RowMapForObject() { 

      public Object rowMapForObject(ResultSet rs) { 
 Student student = null; 
  try { 
   if(rs != null && rs.next()) { 
      student = new Student(); 
      student.setAge(rs.getInt(Student.AGE)); 
      student.setId(rs.getLong(Student.ID)); 
      student.setName(rs.getString(Student.NAME)); 
    } 
 } catch (SQLException e) { 
   e.printStackTrace(); 
 } 
  return student; 
      } 
    }); 
  } 
 
   
  public List getStudentAll() { 
    String sql = "select * from t_student"; 
    List list = super.queryForList(sql, null, new RowMapForList() { 
 
      @Override 
      public List rowMapForList(ResultSet rs) { 
 List list = null; 
 try { 
   if(rs != null) { 
     list = new ArrayList(); 
     while(rs.next()) { 
Student student = new Student(); 
student.setId(rs.getLong("id")); 
student.setAge(rs.getInt("age")); 
student.setName(rs.getString("name")); 
list.add(student); 
     } 
   } 
 } catch(SQLException e) { 
   e.printStackTrace(); 
 } 
 return list; 
      } 
    }); 
     
    return list; 
  }   
} 

如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/144768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号