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

  • 相关阅读:
    C# UserControl集合属性使用
    类属性的几个特性的含义
    C# 绘图时使用抗锯齿会多出一个像素
    Tooltip导致的无法访问已释放对象
    C#窗口闪烁问题解决
    窗口扩展风格
    动态字段列表实现及List<T>排序
    比较好用的Copy代码到博客VS扩展工具
    Dictionary与SortedDictionary
    VS2017 15.6之后支持直接反编译了
  • 原文地址:https://www.cnblogs.com/qq809306794/p/3163793.html
Copyright © 2011-2022 走看看