OR-Mapping 设计改进(结果集元数据) | 学习笔记

简介: 简介:快速学习 OR-Mapping 设计改进(结果集元数据)

开发者学堂课程【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;

import java.sql.Connection;

public 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 ThreadLocal<Connection> threadLocal =

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,FROM member ”;

PreparedStatement pstmt = conn. preparedStatement(sql) ;

ResultSetMetaData rsmd = pstmt.getMetaData() ;

System.out.println(rsmd.getColumnCount());

conn.close();

}

}

执行后得到5,对应数量。

System.out.println(rsmd.getColumnCount());

改为System.out.println(rsmd.getColumnTypeName(1));

执行后得到结果为 VARCHAE2

而执行

System.out.println(rsmd.getColumnTypeName(2));

得到同样结果。

执行System.out.println(rsmd.getColumnTypeName(3));

得到 NUMBER,执行

System.out.println(rsmd.getColumnTypeName(4));

得到 DATE

执行System.out.println(rsmd.getColumnTypeName(5));

,得到 CLOB,可以看出得到的不只是数据。

将其再改为

System.out.println(rsmd.getColumnLabel(1) += + rsmd.getColumnTypeName(1));,

依次列举至5进行执行,得到 MID= VARCHAE2、NAME= VARCHAE2等依此类推。

而后要通过ResultSet rs = pstmt.executeQuery();进行查询后,再通过while (rs.next()) {}取出内容,然后将列名称改为小写就能与类内的属性对应上,只有把属性对应上才能用反射来处理。


三、总结

现在发现利用所有的元数据可以更加简单的实现与反射的联系,以实现动态设置的效果。

相关文章
|
自然语言处理 搜索推荐 关系型数据库
ErnieRAG:用ErnieBot打造企业级RAG应用
ErnieRAG:用ErnieBot打造企业级RAG应用
205 0
|
存储 缓存 安全
C语言进程(第二章,wait,sleep,waitpid,pthread_mutex_lock,pthread_mutex_unlock)
C语言进程(第二章,wait,sleep,waitpid,pthread_mutex_lock,pthread_mutex_unlock)
306 0
Java基础进阶IO流-FileInputStream字节输入流
Java基础进阶IO流-FileInputStream字节输入流
Java基础进阶IO流-FileInputStream字节输入流
|
传感器 IDE 物联网
第一篇自我介绍(单片机)
第一篇自我介绍(单片机)
30 分钟学习 go 语言
今天和大家一起学习 go 语言 我的题目是 第一分钟 打开 Go 语言官方文档 The Go Programming Language (google.cn) 并进行下载与安装 Downloads - The Go Programming Language (google.cn)
207 0
30 分钟学习 go 语言
|
Oracle 关系型数据库 数据库
Oracle相关知识点关键词
oracle导出建表语句        oracle删除表语句 oracle 锁表语句 oracle语句创建表 oracle 表分析语句 oracle 备份表语句 oracle查看表的语句 ...
2243 0
|
算法 Linux 调度
第七章--进程调度
        本章讨论进程调度(schednling),主要关心什么时候进行进程切换及选择哪一个进程来运行。 一、调度策略         决定什么时候以怎样的方式选择一个新进程运行的这组规则就是所谓的调度策略(scheduling policy)。
1126 0
UE1400a注册码
name:www.green.comcode:MMHGT-NDMIH-RNJGQ-RJDSZ-LMDME-NBJMK-RJDJY-PLBVT UltraEdit-32最近的更新可谓神速,又到了最新版UltraEdit-32 14.
644 0