- 浏览: 1635156 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (309)
- ext (19)
- web (13)
- PHP (19)
- 互联网新闻 (3)
- oracle (3)
- Mootools (1)
- FLEX (3)
- 人在职场 (2)
- hibernate (24)
- spring2 (1)
- J2SE (24)
- WEB_UI (14)
- 其它 (11)
- Log4J (1)
- iText (10)
- SQL (11)
- 设计模式 (3)
- lucene (6)
- 开源项目 (2)
- javascript (20)
- 软件&破解补丁 (48)
- Quartz (2)
- 解决方案 (1)
- 工作存档 (2)
- JAVA对文件操作 (2)
- C&C#&VC (1)
- struts2 (3)
- 版本控制 (2)
- 软考基础 (23)
- JBPM (2)
- velocity (4)
- javamail (3)
- HttpClient (9)
- 虚拟化技术 (2)
- 报表 (3)
- ibatis (5)
- Spring (4)
- 信用卡 (0)
- 芒果钱包 (0)
- 养卡 (0)
最新评论
-
a601962168:
...
通过JAVA与串口(RS232)通信实例 -
olive009:
...
Adobe Acrobat 9 Pro & Pro Extended 中文版/英文版 下载及破解补丁 -
overshit:
api更新了,一加filter就Callback filter ...
深入浅出CGlib-打造无入侵的类代理 -
u010778233:
写得很不错,已经用起来了,谢谢
将jdbc结果集转换成对象列表 -
924060929:
我想找就是要这个功能!!!!!!!!
velocity基础教程--2自定义ResourceLoader实现字符模板
将jdbc结果集转换成对象列表
估计hibernate就是用得这种方式进行转换的。
实体对象
具体的工具类
估计hibernate就是用得这种方式进行转换的。
实体对象
package test; //实体对象,该对象的属性与数据库中的字段相同,当然可以改变具体看需求 public class Person { private int id; private int age; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package test; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; public class Main { //用于测试的方法 public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, ClassNotFoundException { Connection conn = DbUtils.getConn(); ResultSet rs = null; PreparedStatement psmt = null; System.out.println(conn); try { psmt = conn.prepareStatement("select * from person"); rs = psmt.executeQuery(); List list = DbUtils.populate(rs, Person.class); for(int i = 0 ; i<list.size() ; i++){ Person per = (Person) list.get(i); System.out.println("person : id = "+per.getId()+" name = "+per.getName()+" age = "+per.getAge()); } } catch (SQLException e) { e.printStackTrace(); }finally{ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs=null; } if(psmt!=null){ try { psmt.close(); } catch (SQLException e) { e.printStackTrace(); } psmt=null; } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn=null; } } } }
具体的工具类
package test; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class DbUtils { private static String url = "jdbc:mysql://localhost:3306/test"; private static String username = "root"; private static String password = ""; private static String driverClass = "com.mysql.jdbc.Driver"; //没什么好说的,获取数据库连接 public static Connection getConn(){ Connection conn = null; try { Class.forName(driverClass); conn = DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /* * 将rs结果转换成对象列表 * @param rs jdbc结果集 * @param clazz 对象的映射类 * return 封装了对象的结果列表 */ public static List populate(ResultSet rs , Class clazz) throws SQLException, InstantiationException, IllegalAccessException{ //结果集的元素对象 ResultSetMetaData rsmd = rs.getMetaData(); //获取结果集的元素个数 int colCount = rsmd.getColumnCount(); // System.out.println("#"); // for(int i = 1;i<=colCount;i++){ // System.out.println(rsmd.getColumnName(i)); // System.out.println(rsmd.getColumnClassName(i)); // System.out.println("#"); // } //返回结果的列表集合 List list = new ArrayList(); //业务对象的属性数组 Field[] fields = clazz.getDeclaredFields(); while(rs.next()){//对每一条记录进行操作 Object obj = clazz.newInstance();//构造业务对象实体 //将每一个字段取出进行赋值 for(int i = 1;i<=colCount;i++){ Object value = rs.getObject(i); //寻找该列对应的对象属性 for(int j=0;j<fields.length;j++){ Field f = fields[j]; //如果匹配进行赋值 if(f.getName().equalsIgnoreCase(rsmd.getColumnName(i))){ boolean flag = f.isAccessible(); f.setAccessible(true); f.set(obj, value); f.setAccessible(flag); } } } list.add(obj); } return list; } }
发表评论
-
Java中Calendar日期对象【笔记】
2010-02-03 09:18 1581Java中Calendar日期对象【笔记】 最近项目中用到了C ... -
通过JAVA与串口(RS232)通信实例
2009-12-10 18:13 21423最近了解到的需求是需要需激光打刻机进行(RS232)串口通信, ... -
JAVA常用的代理设置
2009-09-09 09:50 8317由于公司上网实行代理机制, 而最近一段时间又在研究Web上的O ... -
解析图片1D/2D码(条形码)
2009-06-26 16:07 3588看到一个有趣的东西可以解析条码的工具库 ZXING 测试了一下 ... -
初探JDK6 javax.script (javascript解析)
2009-06-04 13:40 4911初探JDK6 javax.script (javascript ... -
J2SE5.0新特性之监控与管理
2009-05-12 10:47 1788j2se 5.0使用 Java Management Exte ... -
HttpClient请求中文乱码详解
2009-02-16 14:10 39128HttpClient 请求的中文乱码问题 相关类库: comm ... -
java的socket通信的demo
2008-12-31 12:44 4271package test.socket; impor ... -
java创建系统托盘实现(swt和jdk6分别实现)
2008-12-29 21:44 4419由于jdk6之前并不支持 所以使用swt jdk6可以支持了 ... -
java与电子邮件
2008-10-07 15:23 1955java与电子邮件 -
如何通过jndi连接数据源
2008-09-22 09:43 1449// Obtain our environment nam ... -
使用+JDBC+的高级数据库操作
2008-09-19 13:27 1378使用+JDBC+的高级数据库操作 -
JSP文件下载--流方式
2008-08-11 14:14 2047<%@page language="jav ... -
apache的fileupload详解
2008-07-31 08:53 2428第1章 文件上传组件的应用与编写 1 1.1 准备实验环境 1 ... -
深入浅出CGlib-打造无入侵的类代理
2008-07-28 14:23 33816CGlib是什么? CGlib是一个强大的,高性能,高质量的C ... -
传统jdbc获取连接的通用方法
2008-06-19 14:24 2632可能是hibernate和ide的关系, 发现目前自己手写jd ... -
apache fileupload中文编码问题
2008-06-18 15:10 4541request.setCheracterEncoding( ... -
JAVA中的反射机制详解(z)
2008-04-14 09:52 1371作者:baocl JAVA反射机制 JAVA反 ... -
JAVA代码注释
2008-03-20 12:09 3386整个类文件注释 示例如下: /* * @(#)O ... -
properties属性文件的相关操作
2008-03-17 13:56 1444properties的使用 加载 Properties p ...
相关推荐
这就是"使用注释将JDBC结果集映射到对象"的主题所关注的。这个主题介绍了一种方法,通过使用注解来简化这个过程,使得数据转换更加高效和易于维护。 在传统的JDBC编程中,我们通常需要手动编写代码来遍历`ResultSet...
当我们通过JDBC执行SQL查询并获取结果集(ResultSet)时,通常我们需要将这些数据转换为更易于处理的数据结构,如List。本篇文章将详细讲解如何将ResultSet转换为对应的List集合。 首先,我们了解ResultSet对象。...
总之,`ResultSet`对象是JDBC API中处理SQL查询结果的核心,它通过光标管理、列数据访问以及数据类型转换等功能,为开发者提供了灵活而强大的数据处理能力。理解和掌握`ResultSet`的使用,对于高效开发基于JDBC的...
首先,我们需要理解JDBC的基本操作步骤:加载数据库驱动、建立数据库连接、创建Statement或PreparedStatement对象、执行SQL语句以及处理结果集。在传统的JDBC操作中,我们通常是直接使用SQL语句插入、更新或查询数据...
将ResultSet中得到的一行或多行结果集封装成对象的实例是指在使用JDBC连接数据库时,将查询结果集转换成对象的实例,以便更方便地访问和操作数据库中的数据。 在使用JDBC连接数据库时,执行查询语句时会得到一个...
这样,我们就将结果集转换为了一个List对象,每个元素是包含所有列名和对应值的Map。 在给定的代码片段中,`DBUtils`类提供了一个静态方法`getConnection()`用于获取数据库连接,以及一个`free()`方法用于释放...
"支持Resultset转List JavaBean对象"表示JDBCUtils工具类可能还包含了将数据库查询结果(ResultSet)转化为JavaBean对象集合(List)的功能。这通常涉及到迭代ResultSet,为每个记录创建一个新的JavaBean实例,并...
使用DriverManager类的getConnection()方法创建一个连接对象,连接对象是JDBC的核心对象,用于执行SQL语句和处理结果集。 3. 获取Statement 使用Connection对象的createStatement()方法创建一个Statement对象,...
本文将详细介绍如何利用JDBC连接不同的数据库,并执行SQL查询语句,同时将查询结果存储到`ArrayList`中返回,其中字段名统一转换为大写形式。 #### 二、JDBC连接数据库 JDBC是一种用于执行SQL语句的标准Java API,...
3. JDBC驱动桥:它将JDBC调用转换为特定厂商的数据库驱动API调用。这种方式同样需要在客户端安装特定厂商的驱动程序,但它适用于非Java数据库的访问。 4. 纯Java驱动:这是最高效的驱动形式,将JDBC调用转换为...
`ResultSet`对象表示执行SQL语句后返回的结果集,它提供了对结果集中数据的操作方法。 **详细解析:** 1. **`ResultSet`的概念:** - `ResultSet`是一个可滚动的记录集合,它可以通过调用`Statement`或`...
- 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...
1. **JDBC-ODBC Bridge + ODBC驱动**:这种驱动程序将JDBC调用转换为ODBC调用,再由ODBC驱动程序将其转换为数据库访问命令。这种方式的优点是可以利用现有的ODBC数据源访问数据库,但效率和安全性较低。 2. **基于...
2. **结果集处理**:讲解如何使用BeanHandler、MapHandler等处理器将结果集转换为Java对象或Map。 3. **批处理操作**:解释如何使用BatchRunner进行批处理操作,以及如何设置参数。 4. **异常处理**:阐述DBUtils...
- **采用JDBC-ODBC桥的形式**:这种驱动程序将JDBC调用转换成ODBC调用,然后通过ODBC驱动程序与数据库通信。这种方式适用于那些没有提供原生JDBC驱动程序的数据库。 - **部分JAVA程序和部分本地代码组成**:这类驱动...
- 使用泛型可以使其支持不同类型的查询结果处理器,如`ArrayListHandler`用于将结果集转换为List,`SingleBeanHandler`用于处理单个实体对象。 6. **最佳实践**: - 使用PreparedStatement代替Statement,防止SQL...
3. **JDBC网络纯Java驱动程序**:这种驱动程序将JDBC调用转换为一种与数据库无关的网络协议,然后由服务器端将其转化为具体的数据库协议。这种方式非常灵活,尤其适用于Intranet环境。 4. **本地协议纯Java驱动程序*...
JDBC提供了与数据库建立连接、发送SQL语句并处理结果的基本方法。 - **接口定义**:JDBC接口由Sun公司(现在是Oracle的一部分)定义,定义了一组标准接口。 - **实现方式**:具体的实现是由各个数据库厂商提供的,...
5. **处理结果**:获取并处理查询结果,例如通过ResultSet对象。 6. **关闭资源**:在操作完成后,务必关闭Statement、ResultSet和Connection以释放资源。 在"jdbc-driver集"中,可能包含了不同数据库的JDBC驱动JAR...