- 浏览: 269399 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
利用反射和泛型让JDBC编程方便点
一直以来使用JDBC编程的时候,最让人心烦的就是当表的字段很多的时候,我们总是要调用大量的rs的get方法和表对应的类中的set方法来获取一个对象,于是写了方法,让这个过程不用再自己手动写了
该方法经过测试,对基本数据类型,String类型,java.util.Date类型都没问题,另外要说明的是数据库中的字段名需要是属性名的全小写
/**
* 通过ResultSet构建一个指定类型的对象
*
* @param <T>
* @param clazz
* @param rs
* @return
*/
private <T> T buildObject(Class<T> clazz, ResultSet rs) {
if (rs == null) {
return null;
}
T object = null;
try {
// 通过默认构造方法创建一个新的对象
object = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
// 获得对象的所有属性
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
// 获取属性名称
String fieldName = fields.getName();
// 获取属性名称的首字母,并将该字母转为大写形式
String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1);
// 获得和属性对应的setXXX()方法
Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields.getType() });
// 调用目标对象的setXXX()方法对其属性赋值
setMethod.invoke(object, new Object[] { rs.getObject(fieldName.toLowerCase()) });
}
} catch (Exception e) {
e.printStackTrace();
object = null;
}
return object;
}
一直以来使用JDBC编程的时候,最让人心烦的就是当表的字段很多的时候,我们总是要调用大量的rs的get方法和表对应的类中的set方法来获取一个对象,于是写了方法,让这个过程不用再自己手动写了
该方法经过测试,对基本数据类型,String类型,java.util.Date类型都没问题,另外要说明的是数据库中的字段名需要是属性名的全小写
/**
* 通过ResultSet构建一个指定类型的对象
*
* @param <T>
* @param clazz
* @param rs
* @return
*/
private <T> T buildObject(Class<T> clazz, ResultSet rs) {
if (rs == null) {
return null;
}
T object = null;
try {
// 通过默认构造方法创建一个新的对象
object = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
// 获得对象的所有属性
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
// 获取属性名称
String fieldName = fields.getName();
// 获取属性名称的首字母,并将该字母转为大写形式
String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1);
// 获得和属性对应的setXXX()方法
Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields.getType() });
// 调用目标对象的setXXX()方法对其属性赋值
setMethod.invoke(object, new Object[] { rs.getObject(fieldName.toLowerCase()) });
}
} catch (Exception e) {
e.printStackTrace();
object = null;
}
return object;
}
发表评论
-
Java程序员常用工具集
2012-05-23 14:30 985我发现很多人没办 ... -
基于JDBC的数据库连接池技术研究与设计
2011-12-16 14:34 772基于JDBC的数据库连接池技术研究与设计 摘 要 本文 ... -
关于jvm的设置
2011-12-16 10:38 1495一、Java heap space (一 ... -
JVM内存管理深入Java内存区域与OOM
2011-12-15 16:47 908JVM内存管理深入Java内存 ... -
JVM内存管理深入垃圾收集器与内存分配策略
2011-12-15 16:45 1135JVM内存管理深入垃圾收 ... -
jdbc 连接池小结
2011-12-15 16:43 893java基础面试题 主题:[我的工具箱] jXLS ... -
JVM参数调优
2011-12-15 14:35 817JVM参数调优是个很头痛 ... -
Java对象和JSON互转换利器-Gson
2011-11-04 17:22 1857Java对象和JSON互转换利器-Gson . 2008-07 ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-10-26 17:52 812java.lang.OutOfMemoryError: Per ... -
java.sql.Date,java.sql.Time和java.sql.Timestamp
2011-09-06 14:11 1123java.sql.Date,java.sql.Time和jav ... -
java 编码
2011-07-21 19:13 1259w.write(new String("中文网&qu ... -
对泛型进行反射
2011-05-05 19:06 1222对泛型进行反射 今天在用反射的时候突然想到,之前从来没有对泛 ... -
Java反射经典实例 Java Reflection Cookbook
2011-05-05 19:05 770Java反射经典实例 Java Reflection Cook ... -
java 反射机制详解
2011-05-05 19:04 708java 反射机制详解 Java 的反射机制是使其具有动态特性 ... -
一次Java垃圾收集调优实战
2011-05-05 19:03 757一次Java垃圾收集调优实战 1 资料 * JDK5 ... -
利用反射取得泛型信息
2011-05-05 18:22 641利用反射取得泛型信息 一、传统通过反射取得函数的参数和返回值 ... -
深入剖析JAVA反射机制强大功能
2011-04-08 20:47 882* 深入剖 ... -
关于Java反射机制的一个实例
2011-04-08 20:46 836* 关于Java反射机制的一个实例 ... -
Java虚拟机内部构成浅析
2011-04-08 20:44 796* Java虚拟 ... -
详解reflect Java的反射机制
2011-04-08 20:42 531* 详解refle ...
相关推荐
下面是一个简单的泛型JDBC查询方法的示例: ```java public <T> List<T> executeQuery(String sql, Object[] params, Class<T> clazz) { // 连接数据库,执行SQL,获取ResultSet ResultSet resultSet = ...
在Java编程语言中,泛型和反射是两个非常重要的特性,它们可以极大地提高代码的复用性和灵活性。本文将深入探讨如何结合这两种技术实现一个通用的DAO(Data Access Object)设计模式。 首先,我们来看“泛型”。...
Java反射机制是Java编程...这个练习项目将帮助学习者深入理解如何结合使用反射、注释、泛型和JDBC来处理实际的数据库操作,提升Java编程技能。通过实际编写和运行代码,可以更好地掌握这些概念,并提高问题解决能力。
在Java编程语言中,反射和泛型是两个非常重要的特性,它们在开发复杂和灵活的应用程序时发挥着关键作用。本资源"反射泛型完美版分页.rar"似乎提供了一个结合了这两种特性的分页解决方案,特别适用于处理大量数据的...
通过以上知识点,你可以构建一个基础的Java JDBC应用,结合枚举增强代码的可读性,利用泛型提高代码复用,运用反射简化数据操作,整合JDBC实现与数据库的高效交互。在实际项目中,还可以考虑使用ORM框架如Hibernate...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改私有成员,这极大地增强了代码的灵活性...
总结来说,这个案例展示了如何结合Java的泛型和反射机制来实现高效、灵活的数据层封装,同时利用MSSQL JDBC 3.0驱动来与SQL Server数据库进行通信。这样的设计有助于简化数据库操作,提高代码的可扩展性和维护性,...
在Java编程语言中,泛型和反射是两个非常重要的特性,它们在开发高效、灵活的代码中发挥着关键作用。本篇文章将详细讲解如何利用泛型与反射来创建一个万能的数据库操作代码,如同标题所示,这可以极大提高代码的复用...
在Java编程中,反射、注解(Annotation)和泛型是三个非常重要的特性,它们各自在不同的场景下发挥着关键作用。这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM...
在SL275.doc和JDBC编程.ppt中可能包含了JDBC的具体练习题和解决方案,Java275.ppt和J2SE 5.0中的新特性.ppt则可能详细介绍了Java基础知识和Java 5.0版本的更新内容。通过学习这些资料,开发者可以深入理解JDBC编程,...
模拟DBUTIL的实现可以让你更深入理解反射机制如何在实际场景中应用,通过这种方式,你可以动态地调用JDBC接口,使得代码更具通用性和灵活性。 总之,Java反射机制为程序员提供了运行时的类信息访问和动态操作能力,...
这个pdg版的习题集很可能包含了各种类型的题目,包括但不限于基础语法、类与对象、接口、多线程、异常处理、集合框架、输入/输出流、网络编程、反射、泛型、JDBC数据库操作等Java核心概念和应用。 1. **基础语法**...
这些知识点的结合,意味着你可能需要编写能够使用JDBC与Oracle数据库进行交互的Java程序,同时运用DAO模式来实现数据访问的抽象和隔离。这样的复习涵盖了编程、数据库和设计模式等多个层面,对于提升你的IT技能...
《Java编程思想》是 Bruce Eckel 的经典著作,第四版更是深入浅出地介绍了Java语言的核心概念和技术。这个压缩包包含的源代码是书中的示例程序,它们旨在帮助读者理解书中阐述的各种编程原理和实践。通过分析这些源...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。在学习Java的过程中,编程练习是巩固知识、提升技能的关键环节。"Java课后编程练习题答案"提供了对这些练习题的解答,帮助学习者...
学习如何设计和实现类,理解对象之间的关系,以及如何利用多态性提高代码的灵活性和可复用性,是Java编程的基础。 2. **异常处理**:Java提供了强大的异常处理机制,如try-catch-finally语句块,用于捕获和处理运行...
以上只是《Java编程思想》中部分核心知识点的概述,实际书籍中涉及的内容更为丰富,包括网络编程、数据库连接、GUI编程、Swing、JDBC、设计模式等多个方面,是一本全面而深入的Java学习指南。通过阅读和实践书中的...
最后,本书可能还会涉及异常处理、反射机制、泛型、注解以及JAVA EE的相关技术,如Servlet、JSP和JDBC等,这些都是企业级JAVA开发中的常用技能。 通过《JAVA应用编程150例》,读者不仅可以学习到JAVA编程的基本语法...
13. **泛型**:泛型引入了类型参数,增强了代码的类型安全性和复用性,实例会展示泛型类、泛型接口和泛型方法的使用。 通过这100个Java编程实例,学习者可以深入理解Java的各个方面,并在实践中不断提升编程能力。...
9. **网络编程**:Java的Socket和ServerSocket类提供了网络通信的能力,而URL和URLConnection类则方便了网络资源的访问。 10. **国际化**:Java的国际化支持包括ResourceBundle和Locale类,用于处理不同地区的语言...