- 浏览: 921995 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (498)
- J2EE (52)
- 数据库 (17)
- java基础 (43)
- web技术 (19)
- 程序设计 (6)
- 操作系统 (18)
- IT资讯 (7)
- 我的IT生活 (12)
- 学习笔记 (9)
- Jquery (25)
- JavaScript (18)
- spring (40)
- Hibernate (12)
- Struts (10)
- YUI (2)
- Extjs (22)
- .net (0)
- Eclipse (10)
- 社会主义 (2)
- 服务器 (9)
- CSS (8)
- 网络安全 (16)
- 版本控制 (9)
- PHP (2)
- Oracle (42)
- SQL server (1)
- Mysql (11)
- 项目管理 (3)
- 开发工具使用 (10)
- SQL语句 (7)
- Perl (0)
- Shell (6)
- 漏洞 (4)
- ibatis (5)
- hacker (2)
- SQL注入 (6)
- Hacker工具 (2)
- 入侵和渗透 (7)
- 插件/组件 (2)
- 最爱开源 (5)
- 常用软件 (2)
- DOS (1)
- HTML (2)
- Android (9)
- CMS (1)
- portal (8)
- Linux (7)
- OSGI (1)
- Mina (5)
- maven (2)
- hadoop (7)
- twitter storm (2)
- sap hana (0)
- OAuth (0)
- RESTful (1)
- Nginx (4)
- flex (1)
- Dubbo (1)
- redis (1)
- springMVC (1)
- node.js (1)
- solr (2)
- Flume (1)
- MongoDB (2)
- ElasticSearch (1)
最新评论
-
M_drm:
请问要怎么设置浏览器才不报没权限呢?
用JS在页面调用本地可执行文件的方法(ACTIVEX) -
Alexniver:
官方文档。When importing data into I ...
mysql导入数据过慢 解决方法 -
camelwoo:
我记得 Criteria 可以做连接查询与子查询,也可以做分页 ...
Hibernate总结篇二 -
zhenglongfei:
楼主如果SubKeyName 这个节点不存在,怎么办??怎么用 ...
Java操作注册表 -
yxx676229549:
用log4j 2 了
logback
package org.test; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * <p> * Title: LoonFramework * </p> * <p> * Description: * </p> * <p> * Copyright: Copyright (c) 2007 * </p> * <p> * Company: LoonFramework * </p> * * @author chenpeng * @email:ceponline@yahoo.com.cn * @version 0.1 */ public class ConnectionTest { /** * 匹配指定class中数据,并返回包含get和set方法的object * * @author chenpeng * @param clazz * @param beanProperty * @return */ private Object[] beanMatch(Class clazz, String beanProperty) { Object[] result = new Object[2]; char beanPropertyChars[] = beanProperty.toCharArray(); beanPropertyChars[0] = Character.toUpperCase(beanPropertyChars[0]); String s = new String(beanPropertyChars); String names[] = { ("set" + s).intern(), ("get" + s).intern(), ("is" + s).intern(), ("write" + s).intern(), ("read" + s).intern() }; Method getter = null; Method setter = null; Method methods[] = clazz.getMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; // 只取公共字段 if (!Modifier.isPublic(method.getModifiers())) continue; String methodName = method.getName().intern(); for (int j = 0; j < names.length; j++) { String name = names[j]; if (!name.equals(methodName)) continue; if (methodName.startsWith("set") || methodName.startsWith("read")) setter = method; else getter = method; } } result[0] = getter; result[1] = setter; return result; } /** * 为bean自动注入数据 * * @author chenpeng * @param object * @param beanProperty */ private void beanRegister(Object object, String beanProperty, String value) { Object[] beanObject = beanMatch(object.getClass(), beanProperty); Object[] cache = new Object[1]; Method getter = (Method) beanObject[0]; Method setter = (Method) beanObject[1]; try { // 通过get获得方法类型 String methodType = getter.getReturnType().getName(); if (methodType.equalsIgnoreCase("long")) { cache[0] = new Long(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("int") || methodType.equalsIgnoreCase("integer")) { cache[0] = new Integer(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("short")) { cache[0] = new Short(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("float")) { cache[0] = new Float(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("double")) { cache[0] = new Double(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("boolean")) { cache[0] = new Boolean(value); setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("java.lang.String")) { cache[0] = value; setter.invoke(object, cache); } else if (methodType.equalsIgnoreCase("java.io.InputStream")) { } else if (methodType.equalsIgnoreCase("char")) { cache[0] = (Character.valueOf(value.charAt(0))); setter.invoke(object, cache); } } catch (Exception e) { e.printStackTrace(); } } /** * 转换connection查询结果为指定对象实体集合。 * * @author chenpeng * @param connection * @param clazz * @param sql * @return */ public Collection get(final Connection connection, final Class clazz, final String sql) { // 创建PreparedStatement PreparedStatement ptmt = null; // 创建resultset ResultSet rset = null; // 创建collection Collection collection = null; try { // 赋予实例 ptmt = connection.prepareStatement(sql); rset = ptmt.executeQuery(); collection = get(rset, clazz); } catch (SQLException e) { System.err.println(e.getMessage()); } finally { try { // 关闭rs并释放资源 if (rset != null) { rset.close(); rset = null; } // 关闭ps并释放资源 if (ptmt != null) { ptmt.close(); ptmt = null; } } catch (SQLException e) { System.err.println(e.getMessage()); } } return collection; } public Collection get(final ResultSet result, final Class clazz) { // 创建collection Collection collection = null; try { ResultSetMetaData rsmd = result.getMetaData(); // 获得数据列数 int cols = rsmd.getColumnCount(); // 创建等同数据列数的arraylist类型collection实例 collection = new ArrayList(cols); // 遍历结果集 while (result.next()) { // 创建对象 Object object = null; try { // 从class获得对象实体 object = clazz.newInstance(); } catch (Exception e) { } // 循环每条记录 for (int i = 1; i <= cols; i++) { beanRegister(object, rsmd.getColumnName(i), result .getString(i)); } // 将数据插入collection collection.add(object); } } catch (SQLException e) { System.err.println(e.getMessage()); } finally { } return collection; } public static void main(String[] args) { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } String url = "jdbc:mysql://localhost:3306/test?useUnicode=true"; Connection connection = null; PreparedStatement ps = null; ResultSet rs = null; try { connection = DriverManager.getConnection(url, "root", "xxxx"); ConnectionTest test = new ConnectionTest(); // Ltest是我测试用类,实际操作请注入相关对象,支持set,get,is,read,writer为前缀数据对,更多请继续添加。 Collection collection = test.get(connection, Ltest.class, "select * from ltest"); for (Iterator it = collection.iterator(); it.hasNext();) { Ltest ltest = (Ltest) it.next(); System.out.println(ltest.getId() + ":" + ltest.getName()); } } // SQL异常,用于抛出SQL语句处理中所引发的错误。 catch (SQLException e) { System.err.println(e.getMessage()); } // finally,此标识用以包含必须访问的内容。 finally { try { // 关闭rs并释放资源 if (rs != null) { rs.close(); rs = null; } // 关闭ps并释放资源 if (ps != null) { ps.close(); ps = null; } // 关闭connection并释放资源 if (connection != null) { connection.close(); connection = null; } // 如果关闭时产生异常将由此抛出 } catch (SQLException e) { System.err.println(e.getMessage()); } } } }________________________
前一阵写loonframework-db时,写过类似的处理方法,只不过为了效率我都是直接操作的数组对象,现改为集合对象,减少了一些处理,但大体流程如此。我框架中cache一直没有做完,所以没有为您添加,您可以用map之类做一个简单的cache来使用,目前万条数据会较慢于 ResultSet,但是可以正常使用。
发表评论
-
HTTP文件断点上传
2013-05-14 00:10 1038HTTP文件断点上传 http://www.cnblogs.c ... -
使用 Eclipse Memory Analyzer 检测内存泄漏问题
2013-05-05 19:01 875转:http://blog.csdn.net/moneyice ... -
Java字符编码根本原理
2013-04-03 16:33 879Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常就 ... -
StringUtils常用方法说明
2013-01-28 09:21 1010http://www.iteye.com/topic/1128 ... -
中文排序要注意的问题
2012-12-08 10:10 1163遇到了中文排序问题,比如想用拼音排序, String[] ... -
位运算
2012-11-21 17:50 964程序中的所有数在计算 ... -
HashMap的2中遍历方式比较
2012-11-20 11:47 1024http://smallnetvisitor.iteye.co ... -
java计算校验和:对“消息头+会话头+事务头+操作信息”按32位异或,对异或结果取反后的值为校验和。
2012-08-14 17:41 3552java计算校验和:对“消 ... -
java中对Byte字符数组定长截取的方法
2012-08-14 16:33 2118今天在在处理从网络上接收到的字符串,因为是从后台C语言过来的一 ... -
用java流方式判断文件类型
2012-06-28 09:50 1772原文:http://rainsilence.iteye.com ... -
ConcurrentHashMap分析
2012-02-07 16:36 1053ConcurrentHashMap分析 http://w ... -
Webservice调用方式:axis,soap详解
2011-11-29 12:41 1556转自:[url] http://blog.csdn.net/b ... -
java使用相对路径读取xml文件
2011-11-24 20:16 2852java使用相对路径读取xml文件: 一、xml文件一般的存放 ... -
Java 加载配置文件的方式
2011-11-24 20:15 949Java 加载配置文件的方式 http://liuzidon ... -
如何获得request response session 对象
2011-10-10 18:39 1333如何获得request response se ... -
JDBC DAO设计
2011-07-05 14:52 1144Connection的含义 Conn ... -
通过分析JDK源代码研究 Hash 存储机制
2011-07-01 15:53 1272HashMap 和 HashSet 是 Java Collec ... -
java判断数组内有无重复元素
2011-03-23 16:50 5303/** * 判断数组内有无重复元素 * @param ... -
java监听组合键
2011-03-18 15:13 1154监听普通ctrl+c的代码 public void keyP ... -
jdbc中执行一系列sql语句时一个简单事务的实现
2011-01-23 22:35 1665以下代码并没有用到第三方的东西,完全是在java jdk的接口 ...
相关推荐
ResultSet 转为 List ResultSet 转为 List<Map> 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用,...
通过反射从数据库返回集合ResultSet中得到实体对象的list集合
### ResultSet对象获取数据的各种方法 在Java编程语言中,`ResultSet`对象是处理数据库查询结果的核心组件之一。它充当一个可滚动的、可更新的数据表,用于存储从数据库执行SQL语句后返回的结果集。本文将详细介绍...
当你执行SQL查询并从数据库获取数据时,结果会被封装在ResultSet对象中。在本篇文章中,我们将深入探讨ResultSet的主要概念、操作方法以及相关知识点。 1. ResultSet的创建:ResultSet对象是由Statement或...
在使用 ResultSet 之前,需要先执行 SQL 语句,并将结果存储到 ResultSet 对象中。例如: ```java java.sql.Statement stmt = conn.createStatement(); ResultSet r = stmt.executeQuery("SELECT a, b, c FROM ...
在使用ResultSet之前,需要首先创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。Statement对象可以通过createStatement()方法或prepareStatement()方法创建,例如: ```java Statement ...
### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...
本文将详细讲解如何将数据库实体对象转换为Java Bean对象,以实现数据的有效封装和处理。 首先,我们需要理解数据库实体对象和Java Bean的概念。数据库实体对象通常指的是在数据库中的一条记录,它包含了表中的所有...
2. **SQL查询**:执行`Statement`或`PreparedStatement`对象的`executeQuery()`方法来执行SQL查询,这会返回一个`ResultSet`对象。 3. **处理ResultSet**:`ResultSet`是一个游标,可以按照顺序读取查询结果。我们...
Blog-Art.-09-Java-ResultSet-To-List 将ResultSet转换为Map对象的列表。 JdbcUtil类与静态方法一起使用。 该项目是使用NetBeans 8开发的。 环聊SpringMVC: ://youtu.be/clBK-R8LChM Spring-MYBATIS: ://youtu.be...
2. 创建一个Java对象来映射ResultSet中的数据: 假设我们的ResultSet包含用户信息,我们可以创建一个User类: ```java public class User { private String name; private int age; // 构造方法,getters和...
在Java编程中,ResultSet是处理数据库查询结果的主要接口,它由Statement或PreparedStatement对象执行SQL查询后返回。而JavaBean是一种符合特定规范的Java类,通常用于封装数据,便于数据的传输和操作。当我们从...
在IT行业中,数据库查询结果通常以ResultSet对象的形式返回,它是一种存储查询结果的接口,源自Java的JDBC(Java Database Connectivity)API。当需要将这些数据转换为XML格式时,以便于数据交换、存储或进一步处理...
将ResultSet转换为Excel,首先需要创建一个HSSFWorkbook对象(对于.xls文件)或XSSFWorkbook对象(对于.xlsx文件),然后通过创建Sheet对象来创建Excel工作表。接着,遍历ResultSet,为每一行数据创建Row对象,并在...
将ResultSet中得到的一行或多行结果集封装成对象的实例 将ResultSet中得到的一行或多行结果集封装成对象的实例是指在使用JDBC连接数据库时,将查询结果集转换成对象的实例,以便更方便地访问和操作数据库中的数据。...
当执行SQL查询后,结果会被封装成ResultSet对象,允许我们逐行遍历并访问查询返回的数据。在处理ResultSet时,了解其属性和元数据是至关重要的。 ResultSetMetaData是另一个关键接口,它提供了关于ResultSet中列的...
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...
`Statement`或`PreparedStatement`对象执行SQL后,会返回一个`ResultSet`。你可以通过设置`Statement`的属性来改变`ResultSet`的行为,例如设置其类型和并发性。 8. 实用工具和库: 一些第三方库如Apache Commons ...
标签“O2J ResultSe Json”可以解释为“Object to JSON Result Set”,暗示了该程序专注于将Java对象(如ResultSet)转换为JSON格式。"ResultSe"可能是"ResultSet"的简写,而"Json"则代表JSON。 压缩包中的文件是该...
通过调用ResultSet对象的getMetaData()方法,可以获取ResultSetMetaData对象,然后使用该对象的方法来获取结果集的字段名称和其他信息。 下面是一些常用的ResultSetMetaData方法: 1. getColumnCount():返回...