不多说了 直接上代码
public static List resultSetToList(ResultSet rs) throws java.sql.SQLException{
if(rs==null){
return null;
}
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
List list = new ArrayList();
Map rowData;
while (rs.next()){
rowData = new HashMap(columnCount);
for (int i=1; i<=columnCount; i++){
rowData.put(md.getColumnName(i),rs.getObject(i));
}
list.add(rowData);
}
return list;
}
首先将ResultSet封装成list 而每条记录对应一个实体Map
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* <p>Title:属性封装类</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
*/
public class BeanUtils {
/**
*
* @param bean 需要封装的vo
* @param map 需要转换的map
* @return 已经封装好数据的vo(object)
*/
public static Object MapToBean(Object bean, Map map) {
Map methods = new HashMap();
Method m[] = bean.getClass().getMethods();
for (int i = 0; i < m.length; i++) {
Method method = m[i];
String methodName = method.getName().toUpperCase();
methods.put(methodName, method);
}
Iterator it = null;
String key = "";
it = map.keySet().iterator();
while (it.hasNext()) {
key = (String) it.next();
String name = "GET" + key.toUpperCase();
if (methods.containsKey(name)) {
Method setMethod = (Method) methods.get("SET" + key.toUpperCase());
try {
if(setMethod!=null){
Object[] obj=null;
obj=new Object[1];
obj[0]=map.get(key);
setMethod.invoke(bean, obj);
}
else{
continue;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
return bean;
}
}
此方法是将上面查到的list作为参数 然后再将其list里面的map转换成相对性的pojo
假设查询的是student表 与之对应的pojo是Student类 那么调用方法如下:
首先查询数据 获取到resultset
然后
List retultList=resultSetToList(resultset);
遍历retultList 将list里面的Map都转换成pojo
Student stu=(Student)BeanUtils.MapToBean(new Student(),(Map)retultList.get(0));
注意:查询出来的字段名要和pojo中的属性名相同 若查询出age字段 pojo中需有getAge和setAge方法 方法名大小写不限
每天记录一点 好记星不如烂笔头
分享到:
相关推荐
当我们从数据库读出数据得到ResultSet或RowSet的时候,我们的做法是遍历结果集,然后封装到pojo里面,再封装到List,那么,每次封装是不是很麻烦呢,前段时间小弟看了下反射的东西,试着写了个类,目的在于方便封装...
Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...
JDBC通信原理 JDBC驱动类型 JDBC构成 JDBC程序5步走 滚动的结果集 可更新的结果集 SQL数据类型对应的Java类型 事务及批量处理 行集、连接池、LDAP
本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...
根据mysql数据库自动生成对应的javabean,附带jdbc连接池工具类封装,支持Resultset转List javabean对象
次类对ResultSet进行封装,可以将其转化为List,Map,BO等
JavaJDBC的视频,通过ResultSet执行查询操作,视频详细描述了如何使用ResultSet执行查询的案例。
JDBC基础教程之ResultSet对象.doc )
6. JDBC 编程人员使用到的接口? 7. JDBC 编程中主要的接口和类 8. 使用唯一的URL确定数据库 9. JDBC2.0 增强特性 第二章 1. JDBC 编程的步骤 第四章 1. 异常 1. JDBC编程中的异常 2. JDBC当中的元数据 3. 事务(ACID)...
看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...
连接数据库,试用Statement借口进行数据库的更新操作,试用ResultSet接口接受查询结果,PreparedStatement,事务处理,封装JDBC操作数据库的工具类,DAO设计模式
封装ResultSet结果集
此类是针对执行查询语句返回的ResultSet结果集进行设计的,旨在方便用户将数据库的内容转化为Vector、ArrayList容器的操作过程,此类中提供了多种方法从而简化了对ResultSet结果集的转化成本,结合系统提供的...
客服看到给我删掉,我只是想收藏这篇文章,这是复制别人的,怕侵权。...相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要写SQL,只要使用HQL语言就可以了。 使用Hibernate进行编程有以下好处:
最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、...
封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,mysql/mssql数据库代码. 用户只需使用...
java组件开发(15) JDBC操作工具类与ResultSet数据
JDBC规范 java.sql和javax.sql两个包中的类与接口(天龙八部): DataSource:数据源 ... ResultSet:结果集,封装了多条记录 JDBC数据库连接池/Connection Pool DBCP:apache tomcat内置
ResultSet的用法