第二十六天:总结

来源:互联网 发布:体彩排列5历史开奖数据 编辑:程序博客网 时间:2024/05/06 11:54

1.用JDBC操作多个实体:
    1)部门和员工(一对多关系)
        部门有多个员工,员工属于一个部门
        员工表中有一个外键,指向部门表中的部门号
   
    2)老师和学生(多对多关系)
      一个老师教多个学生,一个学生由多个老师教
      老师表
      学生表
      中间表:存放老师ID和学生ID
   
    3)操作多个实体的注意事项:
    a.不管内存中的对象存在何种关系,反映到关系型数据库中,
    都是使用外键表示纪录(即对象)的关联关系。
    b.设计java对象如涉及到多个对象相互引用,
    要尽量避免使用一对多,或多对多关系,而应尽量使用多对一描述对象之间的关系。
   
2.元数据:DataBaseMetaData
    1)DatabaseMetaData dm = conn.getMetaData()
    dm.getURL()
    dm.getUserName()
    dm.getDatabaseProductName()
    dm.getDatabaseProductVersion()
    dm.getDriverName()
    dm.getDriverVersion()
    dm.isReadOnly()
   
    2)ParameterMetaData pmd = ps.getParameterMetaData()
    pmd.getParameterCount()
    pmd.getParameterType(int param)
   
    3)ResultSetMetaData rsmd = rs.getMetaData()
    或ResultSetMetaData rsmd = ps.getMetaData()
    rsmd.getColumnCount()
    rsmd.getColumnName(int column)
    rsmd.getColumnTypeName(int column)
   
3.使用元数据进一步简化JDBC代码
  insert,update,delete  ---->  update
  select                                ---->  query
  业务背景:系统中所有实体对象都涉及到基本的CRUD操作:
    a.所有实体的CUD操作代码基本相同,仅仅发送给数据库的SQL语句不同而已,
    因此可以把CUD操作的所有相同代码抽取到工具类的一个update方法中,并定义参数接收变化的SQL语句。

    b.实体的R操作,除SQL语句不同之外,根据操作的实体不同,对ResultSet的映射也各不相同,
    因此可义一个query方法,除以参数形式接收变化的SQL语句外,
    可以使用策略模式由qurey方法的调用者决定如何把ResultSet中的数据映射到实体对象中。   

   
4.DBUtils框架:
  核心:QueryRunner和ResultSetHandler   
  QueryRunner:
  a.构造方法 ,一般传入DataSource
  b.它的两个方法query 和 update
 
  ResultSetHandler
  a. Object handle (java.sql.ResultSet .rs)。
  b.它的实现类有:
   ArrayHandler
   ArrayListHandler
   BeanHandler
   BeanListHandler
   有List的是每一行,没List的是第一行
           
   ColumnListHandler 某一列
   KeyedHandler
   MapHandler
   MapListHandler