zoukankan      html  css  js  c++  java
  • 编写JDBC框架

    编写自定义JDBC框架
    元数据- DataBaseMetaData
     ResultSet getPrimaryKeys(String catalog, String schema, String table)
     ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
    为什么没有getDatabases()? ----
    元数据- ParameterMetaData
    getParameterCount()
    获得指定参数的个数
    getParameterType(int?param)
    获得指定参数的sql类型
    元数据- ResultSetMetaData
    getColumnCount()
    返回resultset对象的列数
    getColumnName(int?column)
    获得指定列的名称
    ?getColumnTypeName(int?column)
    获得指定列的类型

    定义框架中CUD方法
     public static void executeUpdate(String sql, Object[] args)
       throws SQLException {
      Connection conn = JdbcUtil.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql); // sql中可能包含无数个?
      for (int i = 0; i < args.length; i++) {
       pstmt.setObject(i + 1, args[i]);
      }
      pstmt.executeUpdate();
      JdbcUtil.close(pstmt, conn);
     }
    调用方法:
    String sql = "delete from user where id = ?";
    JdbcFramework.executeUpdate(sql, new Object[] { user.getId() });
    ** DBUtils、Spring JDBCTemplate、IBatis

    元数据,就是指一些最基本的数据 (包括库、表、sql、结果集)
    这些数据可以用来编写其它程序,或者框架

    元数据练习:
    怎样将Mysql进行导出备份 mysqldump
    编写一个Java程序实现mysqldump效果!!!

    查询的框架
     public static List executeQuery(String sql, Object[] args,
       ResultSetHandler resultSetHandler) throws SQLException {
      Connection conn = JdbcUtil.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql); // sql中可能包含无数个?
      for (int i = 0; i < args.length; i++) {
       pstmt.setObject(i + 1, args[i]);
      }
      ResultSet rs = pstmt.executeQuery(); // 可能得到user、account 等不同结果集
      List list = resultSetHandler.handler(rs);
      JdbcUtil.close(pstmt, conn);
      return list;
     }
    写框架的重点:把变化作为参数,不变放到框架里!
    编写框架后:
    页面 --- Servlet -- (业务层javabean) --- DAO模式 ---- 框架 ==== DB

    1、利用反射将所有Handler写成一个,但是我的信息不够
    2、如果这里面所有的Handler成为一个,那么就是一个完全的ORM框架
    ORM: 对象关系映射,当你的框架是ORM时,完全可以通过对象操作数据库了
    ORM框架又分为:完全的ORM和不完全的
    如果在JdbcFramework框架上,你又编写了一层DAO 那么这个框架就是ORM的,但是不是完全ORM的
    能看见数据库底层实现的就不是完全ORM ----- 完全ORM Hibernate
    思考:如何将不同数据对象的Handler合并到一起?? --- 反射
    问题:怎样保证数据库类型和Java对象中属性类型的转换!!!!!!!
    补充:Hibernate是怎样实现ORM
    Hibernate是通过配置实现的!!!!hbm文件
    class  -----  table
    attr1 type  ----- column1 type
    attr2 type  ----- column2 type

  • 相关阅读:
    给程序员献礼 各种各样漂亮的qq在线状态客服代码生成工具V6.0 支持的顶起来
    CMS系统遇挂马,送大家个木马监控软件来解决问题!
    pgpoolII的性能缺陷
    socket通信,server与多客户端通信(二)
    对pgpooII的pool_process_context的 proc_id 的理解
    C语言 对Ctrl+C 的处理
    pgpoolII 的health_check_period 和 health_check_timeout
    pgpoolII的性能缺陷(二)
    模仿pgpoolII的方式,建立线程池
    pgpoolII中是如何实现进程池的
  • 原文地址:https://www.cnblogs.com/qq809306794/p/3163793.html
Copyright © 2011-2022 走看看