通过检查学员的作业,复习Spring中的JdbcTemplate和RowMapper的应用,有的学员本来自己无法完成昨天的作业,但通过昨天的思考和今天对其他学员作业的讲解,也跟着学会了如何完成作业。
讲解元数据对象:连接,结果集,PreparedStatement参数。元数据对象用于获取数据库结构和表结构信息,例如,获取某个数据库的所有表名,获取某个表中所有列的名称及其数据类型。还可以通过元数据对象了解驱动程序所支持的功能。
getTables方法的各个参数及返回结果中各列的信息。
凡是要用到DatabaseMetadata的方法进行检测的特性和方法调用,应在该方法后面补充说明一下。调用DatabaseMetadata的getMajor方法得到驱动程序的版本号,可了解该驱动程序支持的方法。DatabaseMetadata的getMaxConnections和getMaxStatements方法可获得数据库支持的最大连接数和每个连接的statement个数。
ResultSetMetadata的重要方法:getColumnCount、getColumnName。
作业:编写一个程序,用“show -d 库名”显示出库中的所有表,用“show -t 表名”显示出一个表中的各个字段信息,用“show -i 表明”显示出一个表中的各个字段名及相应的各行数据。
课堂上随手写的一段示意代码:
ResultSet rs;
ResultSetMetaData rsmd = rs.getMetaData();
colnum = rsmd.getColumnCount()
for(int i=1;i<colnum;i++)
{
System.out.print(rsmd.getColumnName(i) + " ")
}
System.out.println(rsmd.getColumnName(i));
while(rs.next())
{
for(int i=1;i<colnum;i++)
{
System.out.print(rs.getString(i) + " ")
}
System.out.println(rs.getString(i));
}
Spring中的SQLUpdate和MappingSqlQuery的应用:SQLUpdate也叫更改对象,我们是直接可以使用它来完成数据库记录的更改操作;MappingSqlQuery也叫查询对象,实际上它仅仅是查询对象的抽象基类,我们是要先自己创建出查询对象,然后使用这个查询对象。
关于“尽量使用组合,避免使用继承”的实际分析讲解:
A继承B:
class A extends B
{
doSomeThing()
{
/*B.*/method1();
/*B.*/method2();
}
}
实际上在A中相当于创建了一个B,只是这个创建过程是自动的和隐含的。
A调用B的比较:
class A extends B
{
doSomeThing()
{
B b = new B()
b.method1();
b.method2();
}
}
明天开始放国庆假,有些学员下午要赶火车,所以,下午无法再给大家集体上课了,学员们从开学到现在,一直忙于紧张的学习之中,一个多月来,很多人都无暇顾及北大校园的美景,索性安排组织一些留校的学员游览北大校园风景.