编写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

原文地址:https://www.cnblogs.com/qq809306794/p/3163793.html