`

使用反射实现ORM

阅读更多
首先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);
       }

    }

    }
分享到:
评论

相关推荐

    [反射机制]简单实现ORM

    【反射机制】是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本案例中,"简单实现...通过这些文件,我们可以进一步研究和学习如何使用反射机制来实现ORM。

    基于Java动态代理和反射机制实现ORM

    通过阅读和理解这些代码,开发者可以更直观地了解如何在实际项目中应用动态代理和反射实现ORM。 总之,基于Java动态代理和反射机制实现ORM,可以有效地解耦业务逻辑和数据库操作,提高代码的可读性和可维护性。虽然...

    利用java反射、注解及泛型模拟ORM实现

    这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...

    反射+注解自定义ORM

    总之,通过Java反射和注解自定义ORM框架,可以实现更加灵活、定制化的数据库操作。这种方式不仅提高了开发效率,还降低了代码的耦合度,使得项目维护更加容易。在实际应用中,可以根据项目的具体需求进行适当的调整...

    .net 简单实现orm实例

    ORM,全称Object-Relational Mapping,即对象关系映射,是一种编程技术,用于将关系数据库的数据映射到...在实际项目中,虽然简单的反射实现可能效率较低,但对于理解ORM的工作方式和自定义需求,这是一个很好的起点。

    自己实现orm框架

    ### 自己实现ORM框架 #### 一、概述 在软件开发过程中,ORM(Object-Relational Mapping,对象关系映射)是一种重要的技术手段,用于在面向对象编程语言中表示数据库记录,使程序开发者能够像使用对象一样操作...

    Java-JDBC【源码】实现ORM,结果集映射实体类(ResultSet、注解、反射)

    Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...

    C# 通过反射初探ORM框架的实现原理(详解)

    背景: 以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#...首先看一下C#中反射实现方式: 获取Type对象,反射操作都需要通过Type对象来进行。

    自定义Orm框架的实现

    本项目旨在实现一个基于JDK5.0注解的小型ORM框架,模拟Hibernate的部分功能。 首先,我们要理解ORM的基本原理。ORM的核心思想是将数据库中的表映射为Java对象,将表中的记录映射为对象的实例,这样就可以通过操作...

    C#发现之旅:使用反射和特性构造自己的ORM框架实用.pdf

    总结来说,ORM框架是为了解决关系型数据库与面向对象编程之间的不匹配问题,反射和特性是C#中实现ORM的关键工具。反射提供运行时的类型信息和动态操作,特性则作为对象与数据库映射的标记。通过学习和应用这两者,...

    C#根据反射和特性实现ORM映射实例分析

    ## C#中的反射和特性实现ORM映射详解 ### (一)反射 反射是.NET框架提供的一种强大的机制,它允许程序在运行时动态地获取类型信息并操作类型。简单来说,反射就是程序在运行时检查自身的能力,能够获取类型的信息...

    使用C#的Attribute(特性)实现一个简单的ORM

    【内容概要】:在C#中通过学习使用Attribute,实现一个简单的ORM框架。里面主要有两部分的内容,学习使用Attribute获得设定值;学习通过反射获取属性的值 【适应人群】:初级工程师。但需要对反射、Attribute有一定...

    Hibernate框架ORM的实现原理

    为了实现ORM的功能,需要能够正确地解析上述三种文件。 1. **XML文件解析**: - XML文件解析可以使用两种主流的技术:SAX和DOM。 - SAX(Simple API for XML)是一种基于事件驱动的解析方式,适用于大型文档的...

    K-ORM 自定义ORM工具

    本文将详细探讨一个名为“K-ORM”的自定义ORM工具,该工具基于JDBC和Java反射机制实现,旨在提供简单易用的数据操作接口。 首先,我们要理解JDBC(Java Database Connectivity)在其中的角色。JDBC是Java平台上的...

    ORM技术的简单实现CRUD

    采用Java反射技术实现ORM技术,通过操作对象就可以操作数据库。 本例子采用Eclipse , Java 7.0 , apache DBCP, Spring 3.1等开源框架, 数据库JDBC 采用oracle jdbc. 文件分为两部分, 一部分是基于Eclipse 的ORM的...

    基于java 简易ORM 框架实现(二)

    总之,通过阅读这篇“基于Java简易ORM框架实现(二)”的文章,读者可以了解到ORM框架的基本原理和实现细节,这对于理解和使用现有的ORM框架(如Hibernate、MyBatis)或者自行构建ORM解决方案都有很大的帮助。...

    C#实现自己的ORM系列源码(MiniORM).rar

    在.NET框架中,C#语言提供了丰富的库来实现ORM,如Entity Framework、NHibernate等。然而,理解ORM的工作原理并亲手实现一个简单的ORM框架,对于提升开发者的数据库操作技能和对数据库设计的理解非常有帮助。 本...

    反射的应用 一个简单的ORM.rar

    本示例是一个基于C#语言的简单ORM实现,通过反射机制来实现这一功能。下面我们将详细探讨反射、ORM以及它们在这个简单应用中的运用。 **反射**是.NET Framework提供的一种强大特性,允许在运行时检查类型信息,包括...

    Java反射机制在数据持久层轻量级ORM框架中的应用研究.pdf

    由于Java反射机制允许程序在运行时构造和访问任何类的属性和方法,它为Reflect-ORM框架提供了实现的理论基础。通过反射,框架可以动态地读取对象的属性信息,将这些信息转换为数据库的表结构,以及将数据库查询结果...

Global site tag (gtag.js) - Google Analytics