//将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;
}
分享到:
相关推荐
本案例通过注解的方式,简化了JDBC操作数据库的过程,并利用反射机制动态地调用这些操作。 首先,让我们详细了解Java注解。Java注解是一种元数据,它提供了一种安全的方法来将信息附加到代码中,而不会改变其语义。...
在本案例中,我们将探讨如何利用反射机制来模拟Hibernate的JDBC操作,实现数据库的增删改查(CRUD)功能,以及简单的分页封装。 首先,让我们了解什么是Hibernate。Hibernate是一个强大的对象关系映射(ORM)框架,...
总之,通过类反射机制实现底层数据库连接,是Hibernate等ORM框架实现其功能的关键技术之一。它使我们能够在运行时动态地访问和操作类,极大地提高了代码的灵活性和可扩展性。熟练掌握反射机制,对于理解和应用ORM...
模拟DBUTIL的实现可以让你更深入理解反射机制如何在实际场景中应用,通过这种方式,你可以动态地调用JDBC接口,使得代码更具通用性和灵活性。 总之,Java反射机制为程序员提供了运行时的类信息访问和动态操作能力,...
在Java编程语言中,反射机制是一项强大的特性,它...通过深入理解反射和JDBC API,开发者可以编写出更灵活、适应性强的代码,以应对各种数据库连接需求。同时,了解项目结构和依赖管理也是开发过程中不可或缺的一部分。
反射机制允许程序在运行时通过`Class`对象来访问和操作类的信息。`Class`对象代表了Java类的元数据,包含了类的所有属性、方法、构造器等信息。通过`Class`对象,我们可以: 1. 获取类的完整包名和类名,如`...
首先,让我们理解什么是反射机制。反射是指在程序运行过程中,我们能够获取到类、接口、字段以及方法的信息,并且能够在运行时创建和调用这些对象。通过Class类、Constructor类、Method类和Field类,我们可以动态地...
然后,通过反射机制,子类可以根据不同的数据库操作需求,动态地调用这些方法。 下面是一个简化的示例: 1. 首先,定义一个`JDBCTemplate`基类,其中包含基本的JDBC操作方法: ```java public abstract class ...
Java 反射机制是Java语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并调用其方法。这使得Java代码具有高度的灵活性和...在实际开发中,理解并恰当使用反射机制,可以极大地提高代码的可扩展性和维护性。
在Java编程语言中,反射机制和抽象工厂设计模式是两种重要的技术,它们在构建多数据库模型时发挥着关键作用。...通过深入理解和实践这个源码,开发者可以更好地掌握Java反射机制和抽象工厂模式在实际项目中的应用。
10. **应用实例**:反射机制在许多实际场景中都有应用,如Spring框架中的依赖注入、JDBC的动态SQL生成、单元测试框架(如JUnit)以及插件系统等。 总结起来,Java反射机制是Java语言中的一种高级特性,它提供了对...
例如,了解JDBC如何通过反射机制调用数据库驱动的特定方法,或者数据库连接是如何在内部实现的,都能帮助我们更好地设计和优化数据库应用程序。 总之,JDBC是Java开发中的重要工具,理解和掌握其基本操作和高级特性...
描述中提到的"jdbc.ppt"可能是指使用反射机制来动态加载数据库驱动并执行SQL语句的例子。在Java JDBC中,通常我们会先加载数据库驱动的Class,然后通过反射调用`DriverManager.getConnection()`方法建立数据库连接。...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。...在实际开发中,理解并恰当地运用反射机制,可以极大地提升Java程序的灵活性和扩展性。
### JAVA中的反射机制详解 #### 一、反射机制概述 反射是Java编程语言的一个核心特性,它使得程序能够在运行时动态地获取类的信息并操纵类的行为。反射的概念最早由Smith在1982年提出,它指的是程序有能力访问、...
在标题“JAVA反射,降低JDBC使用难度”中,我们可以理解到,通过反射机制,可以简化Java数据库连接(JDBC)的操作,使其更灵活且易于维护。反射提供了一种动态访问和修改类、接口、字段和方法的能力,即使这些元素在...
.forName(args[0] + "OfficeAble"); // 动态加载接口实现的类 Object obj...理解并掌握反射机制对于深入学习Java和开发复杂应用程序至关重要。在实际应用中,应当权衡反射带来的便利与潜在的性能和安全问题,谨慎使用。
Java的反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。...在诸如Spring框架、JDBC等高级Java技术中,反射机制起着关键作用,是开发者必须理解和掌握的重要概念。
这里的`Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")`调用实际上是利用反射机制将指定的类加载到JVM中。这个类位于JRE的`rt.jar`库中,具体路径为`jre\lib\rt.jar\sun\jdbc\odbc\JdbcOdbcDriver.class`。 #### ...
本文将深入探讨反射机制的概念、用途、优缺点以及如何使用反射来获取类的相关信息。 一、反射机制的基本概念 反射机制是指在程序运行过程中,通过类的全名获取类对象,从而能够访问和操作类的私有成员(如私有方法...