`
312350968
  • 浏览: 212151 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

通过JDBC来理解反射机制

阅读更多
//将ResultSet中的数据转换为相应的对象
	@SuppressWarnings("unchecked")
	private <T> T buildAlarm(T pojo, ResultSet rs) {
		ResultSetMetaData rsmd;
		try {
			rsmd = rs.getMetaData();
			int columnsCount = rsmd.getColumnCount();
			for (int i = 1; i <= columnsCount; i++) {
				String fieldName = rsmd.getColumnLabel(i).toLowerCase();
				Object value = rs.getObject(fieldName);
				if(value instanceof java.sql.Date){
					value = new java.util.Date(((java.sql.Date) value).getTime());
				}
				if(value instanceof java.sql.Timestamp){
					value = new java.util.Date(((java.sql.Timestamp) value).getTime());
				}
				BeanUtils.setProperty(pojo, fieldName, value);
			}
		} catch (Exception e1) {
		}
		return pojo;
	}
	
	
	
	
	
	
	private <T> T buildAlarm(T pojo, ResultSet rs) {
		ResultSetMetaData rsmd;
		try {
			rsmd = rs.getMetaData();
			int columnsCount = rsmd.getColumnCount();
			for (int i = 1; i <= columnsCount; i++) {
				String fieldName = rsmd.getColumnLabel(i).toLowerCase();
				Object value = rs.getObject(fieldName);
				if(value instanceof java.sql.Date){
					value = new java.util.Date(((java.sql.Date) value).getTime());
				}
				if(value instanceof java.sql.Timestamp){
					value = new java.util.Date(((java.sql.Timestamp) value).getTime());
				}
				BeanUtils.setProperty(pojo, fieldName, value);
			}
		} catch (Exception e1) {
		}
		return pojo;
	}
	
	
	
	
	//将ResultSet中的数据转换为相应的对象
	@SuppressWarnings("unchecked")
	private <T> T buildAlarm_rs(T pojo, ResultSet rs) {

		Class classType = pojo.getClass();
		ResultSetMetaData rsmd;
		try {
			rsmd = rs.getMetaData();
			int columnsCount = rsmd.getColumnCount();

			for (int i = 1; i <= columnsCount; i++) {
				String fieldName = rsmd.getColumnLabel(i).toLowerCase();
				String stringLetter = fieldName.substring(0, 1).toUpperCase();

				String setName = "set" + stringLetter + fieldName.substring(1);
				String getName = "get" + stringLetter + fieldName.substring(1);

				Method getMethod = classType.getMethod(getName, new Class[] {});
				Method setMethod = classType.getMethod(setName,
						new Class[] { getMethod.getReturnType() });
				Class fieldType = setMethod.getParameterTypes()[0];
				Object value = null;
				if (fieldType == Integer.class || "int".equals(fieldType.getName())){
					if(rs.getObject(fieldName)!=null)
						value = rs.getInt(fieldName);
				}
				else if (fieldType == Float.class || "float".equals(fieldType.getName())){
					if(rs.getObject(fieldName)!=null)
						value = rs.getFloat(fieldName);
				}
				else if (fieldType == Double.class || "double".equals(fieldType.getName())){
					if(rs.getObject(fieldName)!=null)
						value = rs.getDouble(fieldName);
				}
				else if (fieldType == Timestamp.class || fieldType == java.util.Date.class){
					value = rs.getTimestamp(fieldName);
				}
				else
					value = rs.getString(fieldName);

				// 赋值操作

				setMethod.invoke(pojo, new Object[] { value });
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		return pojo;
	}
 
分享到:
评论

相关推荐

    java注解、java反射机制 jdbc 封装

    本案例通过注解的方式,简化了JDBC操作数据库的过程,并利用反射机制动态地调用这些操作。 首先,让我们详细了解Java注解。Java注解是一种元数据,它提供了一种安全的方法来将信息附加到代码中,而不会改变其语义。...

    使用java的反射机制来模拟hibernater的jdbc操作

    在本案例中,我们将探讨如何利用反射机制来模拟Hibernate的JDBC操作,实现数据库的增删改查(CRUD)功能,以及简单的分页封装。 首先,让我们了解什么是Hibernate。Hibernate是一个强大的对象关系映射(ORM)框架,...

    通过类反射机制实现底层数据库连接

    总之,通过类反射机制实现底层数据库连接,是Hibernate等ORM框架实现其功能的关键技术之一。它使我们能够在运行时动态地访问和操作类,极大地提高了代码的灵活性和可扩展性。熟练掌握反射机制,对于理解和应用ORM...

    JAVA反射机制原理剖析配经典例子,以及模拟DBUTIL发射实现的JDBC操作包自己写的一个DEMO.★

    模拟DBUTIL的实现可以让你更深入理解反射机制如何在实际场景中应用,通过这种方式,你可以动态地调用JDBC接口,使得代码更具通用性和灵活性。 总之,Java反射机制为程序员提供了运行时的类信息访问和动态操作能力,...

    [反射机制]建立数据库连接

    在Java编程语言中,反射机制是一项强大的特性,它...通过深入理解反射和JDBC API,开发者可以编写出更灵活、适应性强的代码,以应对各种数据库连接需求。同时,了解项目结构和依赖管理也是开发过程中不可或缺的一部分。

    java学习资料-反射机制深入理解剖析

    反射机制允许程序在运行时通过`Class`对象来访问和操作类的信息。`Class`对象代表了Java类的元数据,包含了类的所有属性、方法、构造器等信息。通过`Class`对象,我们可以: 1. 获取类的完整包名和类名,如`...

    通过反射机制写的通用的方法

    首先,让我们理解什么是反射机制。反射是指在程序运行过程中,我们能够获取到类、接口、字段以及方法的信息,并且能够在运行时创建和调用这些对象。通过Class类、Constructor类、Method类和Field类,我们可以动态地...

    运用反射做的一个经典JDBC模板

    然后,通过反射机制,子类可以根据不同的数据库操作需求,动态地调用这些方法。 下面是一个简化的示例: 1. 首先,定义一个`JDBCTemplate`基类,其中包含基本的JDBC操作方法: ```java public abstract class ...

    java反射机制图文教程

    Java 反射机制是Java语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并调用其方法。这使得Java代码具有高度的灵活性和...在实际开发中,理解并恰当使用反射机制,可以极大地提高代码的可扩展性和维护性。

    反射机制与抽象工厂结合多数据库模型源码.zip

    在Java编程语言中,反射机制和抽象工厂设计模式是两种重要的技术,它们在构建多数据库模型时发挥着关键作用。...通过深入理解和实践这个源码,开发者可以更好地掌握Java反射机制和抽象工厂模式在实际项目中的应用。

    Java反射机制概述.zip

    10. **应用实例**:反射机制在许多实际场景中都有应用,如Spring框架中的依赖注入、JDBC的动态SQL生成、单元测试框架(如JUnit)以及插件系统等。 总结起来,Java反射机制是Java语言中的一种高级特性,它提供了对...

    JDBC公共操作方法代码

    例如,了解JDBC如何通过反射机制调用数据库驱动的特定方法,或者数据库连接是如何在内部实现的,都能帮助我们更好地设计和优化数据库应用程序。 总之,JDBC是Java开发中的重要工具,理解和掌握其基本操作和高级特性...

    java反射机制的实现与使用

    描述中提到的"jdbc.ppt"可能是指使用反射机制来动态加载数据库驱动并执行SQL语句的例子。在Java JDBC中,通常我们会先加载数据库驱动的Class,然后通过反射调用`DriverManager.getConnection()`方法建立数据库连接。...

    Java反射机制学习总结.doc

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。...在实际开发中,理解并恰当地运用反射机制,可以极大地提升Java程序的灵活性和扩展性。

    JAVA中的反射机制(内含大量实例)

    ### JAVA中的反射机制详解 #### 一、反射机制概述 反射是Java编程语言的一个核心特性,它使得程序能够在运行时动态地获取类的信息并操纵类的行为。反射的概念最早由Smith在1982年提出,它指的是程序有能力访问、...

    JAVA反射,降低JDBC使用难度

    在标题“JAVA反射,降低JDBC使用难度”中,我们可以理解到,通过反射机制,可以简化Java数据库连接(JDBC)的操作,使其更灵活且易于维护。反射提供了一种动态访问和修改类、接口、字段和方法的能力,即使这些元素在...

    java反射机制的学习心得(csdn)————程序.pdf

    .forName(args[0] + "OfficeAble"); // 动态加载接口实现的类 Object obj...理解并掌握反射机制对于深入学习Java和开发复杂应用程序至关重要。在实际应用中,应当权衡反射带来的便利与潜在的性能和安全问题,谨慎使用。

    关于Java的反射机制-你需要理解这些.docx

    Java的反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。...在诸如Spring框架、JDBC等高级Java技术中,反射机制起着关键作用,是开发者必须理解和掌握的重要概念。

    JDBC驱动加载分析

    这里的`Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")`调用实际上是利用反射机制将指定的类加载到JVM中。这个类位于JRE的`rt.jar`库中,具体路径为`jre\lib\rt.jar\sun\jdbc\odbc\JdbcOdbcDriver.class`。 #### ...

    精华java-反射机制-reflection-完整例子-具体说明-工程实际(完整版).doc

    本文将深入探讨反射机制的概念、用途、优缺点以及如何使用反射来获取类的相关信息。 一、反射机制的基本概念 反射机制是指在程序运行过程中,通过类的全名获取类对象,从而能够访问和操作类的私有成员(如私有方法...

Global site tag (gtag.js) - Google Analytics