开发者学堂课程【DAO 开发实战业务分析:OR-Mapping 设计改进(结果集元数据)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/399/detail/5175
OR-Mapping 设计改进(结果集元数据)
内容介绍:
一、元数据
二、范例
三、总结
一、元数据
要想真正清楚一个合理的 OR-Mapping 的设计改进,必须要清楚 JDBC 的元数据。
(1)概念
所谓的元数据指的是原始的描述数据,例如:Class 里面实际上代表的就是 Object 的元数据,而在进行查询的时候也存在相应的元数据,由于开发之中都会使用 PreparedStatement 进行开发,所以首先来观察在这个接口中定义的方法。
(2)在 PreparedStatement 接口中定义的方法
· 取得结果集元数据:因为代码长,所以先做准备。首先找到 Java.sql 包,在其中找到PreparedStatement接口,再找到 getMetaDate(),即为元数据。而返回结果为 public ResultSetMetaData getMetaData() throws SQLException(),其返回的结果为结果集的元数据。
二、范例
范例:取得结果集元数据
先编写一个测试程序,如下:
package
cn
.mldn.oracle.test.main;
i
mport java.sql.Connection;
p
ublic class MetaDemo {
private static final String DBDRIVER =
“oracle.
jdbc.driver.OracleDriver”;
private static final String DBURL =
“jdbc:oracle:thin:@localhost:1521:MLDN”;
private static final String DBUSER =
“scott”;
private static final String PASSWORD =
“tiger”;
private static T
hread
L
ocal<
C
onn
ection
>
t
hread
L
ocal
=
public static void
main(String
[
] args) throws Exception {
Class.forName(DBDRIVER) ;
Connection conn = DriverMananger.get Connection(DBURL, DBUSER, PASSWORD) ;
String sql =
“
SELECT
mid,name,age,birthday,note,F
ROM member ”;
PreparedStatement pstmt = conn. preparedStatement(sql) ;
R
esult
S
et
M
eta
D
ata
rsmd = pstmt
.
getMetaData() ;
System.out.println(rsmd.getColumnCount());
conn.close();
}
}
执行后得到5,对应数量。
将System.out.println(rsmd.getColumnCount());
改为System.out.println(rsmd.getColumnT
ype
N
ame(
1));
执行后得到结果为 VARCHAE2。
而执行
System.out.println(rsmd.getColumnT
ype
N
ame(
2));
,
得到同样结果。
执行System.out.println(rsmd.getColumnT
ype
N
ame(
3));
,
得到 NUMBER,执行
System.out.println(rsmd.getColumnT
ype
N
ame(
4));
,
得到 DATE。
执行System.out.println(rsmd.getColumnT
ype
N
ame(
5));
,得到 CLOB,可以看出得到的不只是数据。
将其再改为
System.out.println(rsmd.getColumnL
abel(
1) +
“
=
”
+
rsmd.getColumnT
ype
N
ame(
1));,
依次列举至5进行执行,得到 MID= VARCHAE2、NAME= VARCHAE2等依此类推。
而后要通过R
esult
S
et
rs
=
pstmt.
executeQuery();
进行查询后,再通过while (rs.next()) {}取出内容,然后将列名称改为小写就能与类内的属性对应上,只有把属性对应上才能用反射来处理。
三、总结
现在发现利用所有的元数据可以更加简单的实现与反射的联系,以实现动态设置的效果。