- 浏览: 780973 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (573)
- Java基础 (76)
- C++基础 (5)
- hibernate (5)
- struts (4)
- spring (1)
- webservice (7)
- AjaX基础 (0)
- JS脚本 (53)
- 正则表达式 (5)
- html脚本 (30)
- 数据库基础 (54)
- 工作相关 (49)
- 其他 (30)
- Linux (9)
- web服务器 (17)
- JSP (13)
- eclipse (6)
- 面试题相关 (20)
- XML (3)
- Apache common (2)
- 生活 (35)
- VMware (1)
- log4j (9)
- BeanUtils (2)
- 设计模式 (3)
- UML (1)
- UNIX (1)
- ibats (5)
- GT-Grid (17)
- ABAP学习 (17)
- ABAP (35)
- ABAP--ALV (11)
- ABAP--WEBDIMPRO (0)
- abap-sample (1)
- BEMS (2)
- flex (33)
- GIS技术 (3)
最新评论
首先Bean在符合JavaBean的要求,即有一个无参的构造方法,所有属性都有一个set和get方法并且set与get方法是set/get+属性名称(属性名称先字母大写)
public class User {
private int id;
private String name;
private Date birthday;
private float money;
public User() {
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class ORMTest {
public static void main(String[] args) throws SQLException,
IllegalAccessException, InvocationTargetException, Exception {
User user = (User) getObject(
"select id as Id, name as Name, birthday as Birthday, money as Money from user where id=1",
User.class);
//这里取别名就是为了便列名加set或get就可以是JavaBean中属性的set或get方法
System.out.println(user);
Bean b = (Bean) getObject(
"select id as Id, name as Name, birthday as Birthday, money as Money from user where id=1",
Bean.class);
System.out.println(b);
}
private static String[] getColNames(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
String[] colNames = new String[count];
for (int i = 1; i <= count; i++) {
colNames[i - 1] = rsmd.getColumnLabel(i);
}
return colNames;
}
static Object getObject(String sql, Class clazz) throws SQLException,
Exception, IllegalAccessException, InvocationTargetException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
String[] colNames = getColNames(rs);//得到所有的列名
Object object = null;
Method[] ms = clazz.getMethods();//得到javaBean中所有set或get方法
if (rs.next()) {
object = clazz.newInstance();
for (int i = 0; i < colNames.length; i++) {
String colName = colNames[i];
String methodName = "set" + colName;//得到set或get方法名
for (Method m : ms) {
if (methodName.equals(m.getName())) {
m.invoke(object, rs.getObject(colName));//调用set方法,将该列的值放到set方法当中去.
break;
}
}
}
}
return object;
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
public class User {
private int id;
private String name;
private Date birthday;
private float money;
public User() {
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class ORMTest {
public static void main(String[] args) throws SQLException,
IllegalAccessException, InvocationTargetException, Exception {
User user = (User) getObject(
"select id as Id, name as Name, birthday as Birthday, money as Money from user where id=1",
User.class);
//这里取别名就是为了便列名加set或get就可以是JavaBean中属性的set或get方法
System.out.println(user);
Bean b = (Bean) getObject(
"select id as Id, name as Name, birthday as Birthday, money as Money from user where id=1",
Bean.class);
System.out.println(b);
}
private static String[] getColNames(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
String[] colNames = new String[count];
for (int i = 1; i <= count; i++) {
colNames[i - 1] = rsmd.getColumnLabel(i);
}
return colNames;
}
static Object getObject(String sql, Class clazz) throws SQLException,
Exception, IllegalAccessException, InvocationTargetException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
String[] colNames = getColNames(rs);//得到所有的列名
Object object = null;
Method[] ms = clazz.getMethods();//得到javaBean中所有set或get方法
if (rs.next()) {
object = clazz.newInstance();
for (int i = 0; i < colNames.length; i++) {
String colName = colNames[i];
String methodName = "set" + colName;//得到set或get方法名
for (Method m : ms) {
if (methodName.equals(m.getName())) {
m.invoke(object, rs.getObject(colName));//调用set方法,将该列的值放到set方法当中去.
break;
}
}
}
}
return object;
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
发表评论
-
oracle获取指定的日期、时间
2012-07-17 14:32 1061--本周 select trunc(sysdate, 'd ... -
Oracle 常用日期提取脚本汇总
2012-07-17 14:30 803Oracle 常用日期提取脚本汇总 1、本周第一天和最后一 ... -
Windows下安装PostgreSQL8.2图解
2010-08-20 13:16 1149Windows下安装PostgreSQL8.2图解 -
关于用户角色权限管理一点想法
2010-06-09 10:46 1081关键字: 权限 --------------------- ... -
sql语句解析顺序
2010-05-20 14:47 1344标准的 SQL 的解析顺序 ... -
postgreSql 利用触发器创建动态表
2010-05-20 14:43 1711在postgresql 中如果在程序运行中需要根据插入数据条件 ... -
模板设计模式_构建公共通用的Dao
2010-01-14 22:04 939核心代码: Connection的工具类:详见:JDBC数据 ... -
使用构造函数创建JavaScript对象
2010-01-14 21:31 940<!DOCTYPE html PUBLIC " ... -
数据库行转列
2010-01-14 21:09 797create table score ( s_id int ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2010-01-14 20:56 895Insert是T-sql中常用语句,Insert INTO t ... -
mysql导入导出
2010-01-12 12:05 14551. 导出 view plaincopy to clip ... -
mysql导入与导出和删除多条数据数据
2010-01-12 11:57 2223数据导出: mysql> select * from ... -
MySQL索引分类和各自用途
2010-01-12 11:43 1478一、 MySQL: 索引以B树格 ... -
各种主流数据库的分页写法
2010-01-11 16:38 628------------------------------- ... -
MySQL中进行树状所有子节点的查询
2010-01-06 21:16 1217在Oracle 中我们知道有一个 Hierarchical Q ... -
MySQL中进行树状所有子节点的查询
2009-12-29 14:52 993在Oracle 中我们知道有一个 Hierarchical Q ... -
超详细的SQL语句语法
2009-12-28 18:08 1008简单的Transact-SQL查询只包括选择列表、FROM子句 ... -
有关SQL模糊查询
2009-12-28 12:50 1189执行 数据库查询时,有 ... -
视图,存储过程,触发器的好处
2009-12-23 11:33 1053视图的优点: 提高数据安全性,可以不让用户看到表中的某个字 ... -
处理上百万条的数据库如何提高处理查询效率
2009-12-18 12:42 15631.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ...
相关推荐
【反射机制】是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本案例中,"简单实现...通过这些文件,我们可以进一步研究和学习如何使用反射机制来实现ORM。
通过阅读和理解这些代码,开发者可以更直观地了解如何在实际项目中应用动态代理和反射实现ORM。 总之,基于Java动态代理和反射机制实现ORM,可以有效地解耦业务逻辑和数据库操作,提高代码的可读性和可维护性。虽然...
这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...
总之,通过Java反射和注解自定义ORM框架,可以实现更加灵活、定制化的数据库操作。这种方式不仅提高了开发效率,还降低了代码的耦合度,使得项目维护更加容易。在实际应用中,可以根据项目的具体需求进行适当的调整...
ORM,全称Object-Relational Mapping,即对象关系映射,是一种编程技术,用于将关系数据库的数据映射到...在实际项目中,虽然简单的反射实现可能效率较低,但对于理解ORM的工作方式和自定义需求,这是一个很好的起点。
### 自己实现ORM框架 #### 一、概述 在软件开发过程中,ORM(Object-Relational Mapping,对象关系映射)是一种重要的技术手段,用于在面向对象编程语言中表示数据库记录,使程序开发者能够像使用对象一样操作...
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...
背景: 以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#...首先看一下C#中反射实现方式: 获取Type对象,反射操作都需要通过Type对象来进行。
本项目旨在实现一个基于JDK5.0注解的小型ORM框架,模拟Hibernate的部分功能。 首先,我们要理解ORM的基本原理。ORM的核心思想是将数据库中的表映射为Java对象,将表中的记录映射为对象的实例,这样就可以通过操作...
总结来说,ORM框架是为了解决关系型数据库与面向对象编程之间的不匹配问题,反射和特性是C#中实现ORM的关键工具。反射提供运行时的类型信息和动态操作,特性则作为对象与数据库映射的标记。通过学习和应用这两者,...
## C#中的反射和特性实现ORM映射详解 ### (一)反射 反射是.NET框架提供的一种强大的机制,它允许程序在运行时动态地获取类型信息并操作类型。简单来说,反射就是程序在运行时检查自身的能力,能够获取类型的信息...
【内容概要】:在C#中通过学习使用Attribute,实现一个简单的ORM框架。里面主要有两部分的内容,学习使用Attribute获得设定值;学习通过反射获取属性的值 【适应人群】:初级工程师。但需要对反射、Attribute有一定...
为了实现ORM的功能,需要能够正确地解析上述三种文件。 1. **XML文件解析**: - XML文件解析可以使用两种主流的技术:SAX和DOM。 - SAX(Simple API for XML)是一种基于事件驱动的解析方式,适用于大型文档的...
本文将详细探讨一个名为“K-ORM”的自定义ORM工具,该工具基于JDBC和Java反射机制实现,旨在提供简单易用的数据操作接口。 首先,我们要理解JDBC(Java Database Connectivity)在其中的角色。JDBC是Java平台上的...
采用Java反射技术实现ORM技术,通过操作对象就可以操作数据库。 本例子采用Eclipse , Java 7.0 , apache DBCP, Spring 3.1等开源框架, 数据库JDBC 采用oracle jdbc. 文件分为两部分, 一部分是基于Eclipse 的ORM的...
总之,通过阅读这篇“基于Java简易ORM框架实现(二)”的文章,读者可以了解到ORM框架的基本原理和实现细节,这对于理解和使用现有的ORM框架(如Hibernate、MyBatis)或者自行构建ORM解决方案都有很大的帮助。...
在.NET框架中,C#语言提供了丰富的库来实现ORM,如Entity Framework、NHibernate等。然而,理解ORM的工作原理并亲手实现一个简单的ORM框架,对于提升开发者的数据库操作技能和对数据库设计的理解非常有帮助。 本...
本示例是一个基于C#语言的简单ORM实现,通过反射机制来实现这一功能。下面我们将详细探讨反射、ORM以及它们在这个简单应用中的运用。 **反射**是.NET Framework提供的一种强大特性,允许在运行时检查类型信息,包括...
由于Java反射机制允许程序在运行时构造和访问任何类的属性和方法,它为Reflect-ORM框架提供了实现的理论基础。通过反射,框架可以动态地读取对象的属性信息,将这些信息转换为数据库的表结构,以及将数据库查询结果...