- 浏览: 928094 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
将jdbc结果集转换成对象列表
估计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(rsmd.getColumnClassLabel(i));
- // }
- //返回结果的列表集合
- 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;
- }
- }
发表评论
-
jdbc操作参数元数据
2009-10-02 14:56 1164import java.sql.Connection;impo ... -
jdbc得到数据库的元数据
2009-10-02 14:06 1275public static void getDatabaseM ... -
ResultSet 游标控制
2009-10-02 13:40 3735之前在建立Statement或 PreparedStateme ... -
数据库分页大全
2009-10-02 13:21 913Mysql分页采用limt关键字 select * from ... -
jdbc批处理
2009-10-02 11:01 2211看下面的方法 Java代码 Connection conn = ... -
jdbc得到插入数据的id
2009-10-01 17:36 1429//得到插入数据的id(statement还有很多关键字需要研 ... -
JDBC调用存储过程
2009-10-01 17:16 915DELIMITER $$ DROP PROCEDURE IF ... -
JDBC事务的保存点处理
2009-10-01 11:57 913在JDBC的事物处理中,可 ... -
大字段的插入
2009-09-30 20:59 1106//字符读取用read 字符读 ... -
出现的错误
2009-09-30 19:12 1100You have an error in your SQL s ... -
数据库连接类-延迟创建
2009-09-30 18:46 990import java.sql.Connection;impo ... -
数据库连接类-单例
2009-09-30 18:37 1541import java.sql.Connection;impo ... -
数据库连接类-无实例
2009-09-30 18:19 902import java.sql.Connection;impo ... -
连接不同数据库
2009-09-30 14:15 8701.MySQL(http://www.mysql.com)m ... -
jdbc出现的问题
2008-11-18 15:20 845更新数据需要commit在查询数据的时候,没有报错i,但就是无 ...
相关推荐
这就是"使用注释将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连接数据库时,执行查询语句时会得到一个...
"支持Resultset转List JavaBean对象"表示JDBCUtils工具类可能还包含了将数据库查询结果(ResultSet)转化为JavaBean对象集合(List)的功能。这通常涉及到迭代ResultSet,为每个记录创建一个新的JavaBean实例,并...
使用DriverManager类的getConnection()方法创建一个连接对象,连接对象是JDBC的核心对象,用于执行SQL语句和处理结果集。 3. 获取Statement 使用Connection对象的createStatement()方法创建一个Statement对象,...
在处理查询结果时,如果需要对结果集进行进一步的操作,比如转换为Java对象列表,`ResultSetMetaData`就非常有用。以下是一个简单的例子: ```java public List, Object>> resultSetToList(ResultSet rs) throws ...
`ResultSet`对象表示执行SQL语句后返回的结果集,它提供了对结果集中数据的操作方法。 **详细解析:** 1. **`ResultSet`的概念:** - `ResultSet`是一个可滚动的记录集合,它可以通过调用`Statement`或`...
本文将详细介绍如何利用JDBC连接不同的数据库,并执行SQL查询语句,同时将查询结果存储到`ArrayList`中返回,其中字段名统一转换为大写形式。 #### 二、JDBC连接数据库 JDBC是一种用于执行SQL语句的标准Java API,...
5. **处理结果**:获取并处理查询结果,例如通过ResultSet对象。 6. **关闭资源**:在操作完成后,务必关闭Statement、ResultSet和Connection以释放资源。 在"jdbc-driver集"中,可能包含了不同数据库的JDBC驱动JAR...
JDBC提供了与数据库建立连接、发送SQL语句并处理结果的基本方法。 - **接口定义**:JDBC接口由Sun公司(现在是Oracle的一部分)定义,定义了一组标准接口。 - **实现方式**:具体的实现是由各个数据库厂商提供的,...
- 使用泛型可以使其支持不同类型的查询结果处理器,如`ArrayListHandler`用于将结果集转换为List,`SingleBeanHandler`用于处理单个实体对象。 6. **最佳实践**: - 使用PreparedStatement代替Statement,防止SQL...
- 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...
2. **结果集处理**:讲解如何使用BeanHandler、MapHandler等处理器将结果集转换为Java对象或Map。 3. **批处理操作**:解释如何使用BatchRunner进行批处理操作,以及如何设置参数。 4. **异常处理**:阐述DBUtils...
**JDBC(Java Database Connectivity)**是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如连接数据库、发送SQL语句、处理结果集等数据库操作的相关类和方法。JDBC允许开发者编写可移植...
sqljdbc41.jar驱动负责处理SQL语句的编译、执行、结果集的处理等工作,并将Java数据类型转换为SQLServer可识别的数据类型。 四、使用sqljdbc41.jar连接SQLServer 使用sqljdbc41.jar连接SQLServer的步骤大致如下: ...
- **处理结果集**:查询操作的结果会被封装成`ResultSet`对象,便于进行进一步的数据处理。 #### 二、JDBC驱动程序的类型 JDBC驱动程序按照其工作方式可以分为四类: 1. **JDBC-ODBC桥加ODBC驱动程序**:这是一种...