博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORM框架通过映射(反射)获取数据库的数据
阅读量:5854 次
发布时间:2019-06-19

本文共 1744 字,大约阅读时间需要 5 分钟。

  ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。

只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有四种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink。
  ORM是通过使用描述对象和数据库之间映射的元数据,在我们想到描述的时候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作为描述实体对象的映射框架,而大名鼎鼎的Linq则是使用特性(Attribute)来描述的。

元数据(Metadata)

  是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。

对映射获得数据库的数据放大做简单的介绍

创建一个数据表相对应的类Student   包含:属性stuid、stuname、tid以及相对应的set/get方法,右侧是数据库对应的表信息

下面是数据库个字段对应的数据类型

1.通过映射获取student类的实例

path表示Student类的全类名      object表示通过映射(反射)获得的student的实例

2.通过JDBC方法获取数据连接、执行sql语句、获得查询结果集

步骤:加载Driver驱动、获取数据库连接connection、通过连接获得prepareDstatement对象、Resultset接受执行sql语句的结果集

ps.setInt(1,3)----设置查询stuid=3;

3.遍历结果集

通过rs.getMetaDate()(返回数据类型是ResultSetMetaData)获取结果集的元数据 ,再由元数据的getColumnCount()方法获得数据库表Student的字段个数

通过循环逐一获得字段对应的数据,这里注意在循环过程中下标从1开始,下标最大值等于字段的个数

  获得字段对应的set方法

写一个字符串拼接方法,获得给定字符串的set方法

例如:传入name  返回setName

  循环获得数据

  通过元数据的getColumnName(int index)(返回结果是String类型)方法,获得字段的名称;再通过元数据的getColumnTypeName(int index)(返回值String)获得

字段对应的数据类型,将字段名传入写好的上述写好的方法setMethod(String name)中获得字段对应的set方法名称

  判断字段的数据类型,调用对应的set方法

  Student实体类的getClass()方法,运行时获得Student类,通过类的getMethod(setMethod,Integer.class)(以integer类型距离)方法获得set方法,通过invoke()传入Student的实体类和字段对应的值re.getInt(column_name)执行set方法

执行打印结果

 将Student的实体类转换成Student类型,并打印出来

 

============================================================================================

循环打印出对应的数据类型

 

元数据的getColumnType(int index)返回字段数据对应的字段长度

 

 

============以上内容是个人学习总结=================

================仅供参考======================

 

转载于:https://www.cnblogs.com/kuoAT/p/6145755.html

你可能感兴趣的文章
java数组缓冲_java-如何将字节数组转换为缓冲的图像
查看>>
java 错误提示 行数不变_Java树集容器()给出错误的结果
查看>>
python httpstr find_Python string.rfind方法代碼示例
查看>>
java不是百分之百面向对象_java方法传值还是传引用的问题
查看>>
php语言源码安装教程,源码包安装php-Go语言中文社区
查看>>
php分享到微博,Wordpress怎么将选中内容分享到新浪微博
查看>>
php占市场份额,PHP 目前的市场占用率(Market Share)
查看>>
怎么写php扩展插件,php如何写插件
查看>>
wp-cron.php do=,WordPress使用WP-Cron函数定时执行任务
查看>>
php的常用标签有哪些,html标签元素有哪些种类?html的常用标签元素的介绍
查看>>
Ios php格式视频,IOS音频和视频(Audio & Video)
查看>>
php怎么设置input大小,js实现input输入框点击变大缩小
查看>>
java swing请求页面接口,java swing 远程调用接口
查看>>
java中file系统找不到指定的路径,java.io.FileNotFoundException:.\cfg\users(系统找不到指定的路径)...
查看>>
matlab如何清屏的运行,Matlab(1) -- Matlab清屏命令
查看>>
java集成kafka依赖包怎么导入,Kafka指南-源码导入Idea
查看>>
matlab 规律,01用PYTHON下载数据,而后用MATLAB编程探讨规律
查看>>
php 发布拼多多,拼多多补贴换增长的故事还能讲多久?
查看>>
matlab删去第34行和48列,Matlab考试题库+答案(教师出卷参考专用)
查看>>
matlab实现zca去白化,白化算法
查看>>