ORM框架通过映射(反射)获取数据库的数据

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找不到r低版本_R 语言与数据挖掘直播班开始招生,生信分析帮你发高分文章

数据单薄很难支撑文章内容?数据有了不知道怎么处理作出高级的图片?这个时候需要的是生信分析——深度的数据挖掘和分析处理,可以帮助临床医生通过数据处理得到自己想要的信息,更快速地发文章。学习哪种生信分析的工具?…

如何在Jupyter Notebook中使用在anaconda中创建的虚拟环境

如何在Jupyter Notebook中使用在anaconda中创建的虚拟环境 1、创建虚拟环境并激活 conda create -n 虚拟环境名 python 3.8 conda activate 虚拟环境名 2、在虚拟环境中安装ipykernel pip install ipykernel 使用ipykernel生成虚拟环境的kernel python -m ipykernel insta…

BZOJ1823:[JSOI2010]满汉全席——题解

https://www.lydsy.com/JudgeOnline/problem.php?id1823 https://www.luogu.org/problemnew/show/P4171 题面太长啦就不粘过来啦! 裸的2-SAT用来练板子的。 显然属于“a和b之间必须选一种”模型,只要a向b连边,b向a连边即可。 (被…

读两本敦煌书杂记-敦煌由盛转衰(二)

公元420-589年,中国分为南北两个部分(史称魏晋南北朝,由西晋末年八王之乱引起,北方游牧少数民族趁机侵扰中原,并先后建立多个少数民族政权,又称“五胡乱华”。“五胡”主要指匈奴、鲜卑、羯、羌、氐五个胡人…

codevs1079 回家

题目描述 Description现在是晚餐时间,而母牛们在外面分散的牧场中。 农民约翰按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛)。 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可…

什么是xmlschema

XML Schema定义(XML Schema Definition,XSD)是一套W3C标准,用于基于XML的称为XML Schema的类型系统.用于定义的语言是一种称为XML模式定义语言(XML Schema Definition Language)的XML语法.Web 服务使用XML作为表示消息和数据的底层…

第三方app_为什么第三方APP不能下载呢?

这些年科学技术发展日新月异,信息技术和网络技术也层出不穷,大众出行工具的汽车电器化集成度越来越高,汽车上娱乐主机的智能化和网络化程度也越来越高,汽车娱乐主机也成了人民除手机外的第二个娱乐工具,用惯了手机娱乐…

如何管理跨部门的沟通与协作?

俗话说“磨刀不误砍柴工”,选对方法,再复杂的事也能事半功倍。在新营销时代,效率为王,而高效率的背后,则是给力的技术工具与合理的工作方式。 企业级服务的兴起,让人们看到了信息化技术的潜力,从…

启动Jupyter Notebook时出现Kernel error错误的解决方法

启动Jupyter Notebook时出现Kernel error错误的解决方法 方法如下; 1、打开Anaconda Prompt,然后输入jupyter kernelspec list,查看一下 2、打开anaconda的安装目录找到E:\Anaconda3\anaconda3\share\jupyter\kernels\python3下面的kernel.json&#x…

WPF效果第一百九十七篇之Path范围内拖拽

前面效果中分享了彩色马蹄图的效果;这不今天再次在马蹄图的基础上,实现只能在Path内的拖拽效果;闲话不多扯直接看效果:1、关于拖拽顶点实现色域范围选择,参考:https://www.codeproject.com/Tips/828310/The-simplest-WPF-diagram-designer-part2、通过Blend绘制了色度图中间区域…

Ubuntu16.04 + caffe-ssd + [CPU_ONLY] + KITTI 训练总结

本次训练主要参考:http://blog.csdn.net/jesse_mx/article/details/65634482 感谢 Jesse_Mx ,帮助了我很多。 坑一【openCV未安装成功】: openCV未安装成功会导致各种莫名的问题,比如:“No module named cv2”问题。 然…

PHP面向对象常见的关键字和魔术方法

在PHP5的面向对象程序设计中提供了一些常见的关键字,用来修饰类、成员属性或成员方法,使他们具有特定的功能,例如final、static、const等关键字。还有一些比较实用的魔术方法,用来提高类或对象的应用能力,例如__call()…

python中字典长度可变吗_Python:如何给字典分配一个长度可变的列表值?

我试图在100个2D numpy数组中定位质心,如下所示:array([[ 0.216, 0.24 , 0.244, ..., 0.679, 0.684, 0.707],[ 0.23 , 0.229, 0.238, ..., 0.675, 0.676, 0.695],[ 0.221, 0.238, 0.24 , ..., 0.669, 0.677, 0.684],...,[ 0.937, 0.925, 0.923, ..., 0.7…

如何在论文中自动生成标准的参考文献格式

首先下载EndNote软件,word中会自动显示EndNote选项 选择EndNote 选择导出会下载一个txt文件 打开EndNote中向下的箭头导入(从文件导入文献到库中)找到刚才下载的txt文件 点击选择按键找到txt文件 选择打开即可 选择导入 选择导入的内容…

PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues

Programming Assignment2 - Deque and Randomized Queues Review Assignment Specification 课程笔记 Subtext: Modular Programming Stacks and Queues are fundamental data types Value: collection of objectsBasic Operation: insert, remove, iterate.Difference: which …

【Android Studio】查看源码时提示“throw new RuntimeException(Stub!)”

如题…… 详细问题及解决方法:http://blog.csdn.net/u010917495/article/details/51234179 转载于:https://www.cnblogs.com/jaxer/p/7071431.html

TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇...

最近遇到一个线上报警:服务器出现大量TIME_WAIT导致其无法与下游模块建立新HTTP连接,在解决过程中,通过查阅经典教材和技术文章,加深了对TCP网络问题的理解。作为笔记,记录于此。 备注:本文主要介绍…

如何在Jupyter Notebook中使用Python虚拟环境

1、创建虚拟环境: condacreate-n 环境名 python版本号 例如创建一个叫做dl的虚拟环境,python版本为3.7: conda create -n dl python3.7 2、激活虚拟环境: conda activate 环境名 3、在虚拟环境中安装ipykernel (切记这一步是在对应的虚…

python分离文件名和路径_python 分离文件名和路径以及分离文件名和后缀的方法...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问&#xf…

JS基础入门篇( 一 )

1.JS存放在代码中的位置 1.JS写在行间 <div style"background-color: red;" onclick"alert(1)" >hello world</div> 优点&#xff1a;直接&#xff0c;简单 缺点&#xff1a;不方便复用和维护,不符合结构行为分离规范2.JS写在script ( 一般写在…