全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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(); 
      } 
  } 
 
  /** 
   * 释放连接 
   * @param rs 
   * @param psmt 
   * @param conn 
   * @throws SQLException 
   */ 
  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(); 
    } 
     
  } 
   
  /** 
   * 获取连接 
   * @return 
   */ 
  public static Connection getConnection() { 
    return conn; 
  } 
   
  /** 
   * 根据表的名字来获得表的列信息 
   * @param tableName 
   */ 
  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(); 
      } 
    } 
  } 
   
  /** 
   * 根据表的名字来获得表的信息 
   * @param tableName 
   */ 
  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 { 
   
  /** 
   * 根据一些参数来保存相应的对象 
   * @param sql 要执行的sql语句 
   * @param params 为sql语句中相应的参数赋值 
   * @return 
   */ 
  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; 
  } 
   
  /** 
   * 根据一定的参数获得某个具体的对象 
   * @param sql 要执行的sql语句 
   * @param params 为sql语句中相应的参数赋值 
   * @return 
   */ 
  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; 
  } 
 
   
  /** 
   * 根据相应的参数获得查询的结果集 
   * @param sql 
   * @param params 
   * @return 
   */ 
  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 { 
 
  /** 
   * 保存一个Student的信息 
   */ 
  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); 
  } 
   
  /** 
   * 根据id获得一个Student的信息 
   * @param id 
   * @return 
   */ 
  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; 
      } 
    }); 
  } 
 
  /** 
   * 获得所有Student的信息 
   * @return 
   */ 
  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; 
  }   
} 

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


# java  # 使用策略模式操作JDBC数据库  # 操作数据库  # Java使用策略模式解决商场促销商品问题示例  # java实现策略模式使用示例  # Java使用策略模式实现聚石塔接口调用的问题  # 如有  # 希望能  # 谢谢大家  # 可以获得  # 新建一个  # 共同进步  # 疑问请  # PreparedStatement  # closeAll  # ResultSet  # tableName  # return  # close  # void  # param  # SQLException  # printStackTrace  # throws  # psmt  # rs 


相关文章: 免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站之星安装模板失败:服务器环境不兼容?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何快速搭建虚拟主机网站?新手必看指南  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  建站之星代理如何获取技术支持?  公司门户网站制作流程,华为官网怎么做?  在线制作视频网站免费,都有哪些好的动漫网站?  制作网站的软件免费下载,免费制作app哪个平台好?  装修招标网站设计制作流程,装修招标流程?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何快速重置建站主机并恢复默认配置?  建站之星价格显示格式升级,你的预算足够吗?  常州自助建站费用包含哪些项目?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何在腾讯云服务器上快速搭建个人网站?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星安装需要哪些步骤及注意事项?  ,sp开头的版面叫什么?  如何在建站之星绑定自定义域名?  如何快速查询域名建站关键信息?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  建站之星导航菜单设置与功能模块配置全攻略  如何用景安虚拟主机手机版绑定域名建站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  三星网站视频制作教程下载,三星w23网页如何全屏?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  完全自定义免费建站平台:主题模板在线生成一站式服务  建站之星后台管理系统如何操作?  简单实现Android验证码  智能起名网站制作软件有哪些,制作logo的软件?  如何彻底卸载建站之星软件?  如何快速搭建高效可靠的建站解决方案?  如何在万网主机上快速搭建网站?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  制作网站的基本流程,设计网站的软件是什么?  网站制作话术技巧,网站推广做的好怎么话术?  定制建站流程解析:需求评估与SEO优化功能开发指南  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  深圳网站制作的公司有哪些,dido官方网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何快速查询网址的建站时间与历史轨迹?  如何在阿里云高效完成企业建站全流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。