JDBC:如何将resultset的信息自动封装到pojo里面

2023-11-21 07:08

本文主要是介绍JDBC:如何将resultset的信息自动封装到pojo里面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不多说了  直接上代码 

Java代码   收藏代码
  1. public static List resultSetToList(ResultSet rs) throws java.sql.SQLException{  
  2.        if(rs==null){  
  3.            return null;  
  4.        }  
  5.   
  6.        ResultSetMetaData md = rs.getMetaData();  
  7.        int columnCount = md.getColumnCount();  
  8.   
  9.        List list = new ArrayList();  
  10.        Map rowData;  
  11.        while (rs.next()){  
  12.            rowData = new HashMap(columnCount);  
  13.            for (int i=1; i<=columnCount; i++){  
  14.                  
  15.                    rowData.put(md.getColumnName(i),rs.getObject(i));  
  16.                  
  17.                 
  18.            }  
  19.            list.add(rowData);  
  20.        }  
  21.        return list;  
  22.    }  

首先将ResultSet封装成list  而每条记录对应一个实体Map 
Java代码   收藏代码
  1. import java.lang.reflect.InvocationTargetException;  
  2. import java.lang.reflect.Method;  
  3. import java.util.HashMap;  
  4. import java.util.Iterator;  
  5. import java.util.Map;  
  6. /** 
  7.  * <p>Title:属性封装类</p> 
  8.  * 
  9.  * <p>Description: </p> 
  10.  * 
  11.  * <p>Copyright: Copyright (c) 2008</p> 
  12.  * 
  13.  */  
  14. public class BeanUtils {      
  15.     /** 
  16.      *  
  17.      * @param bean 需要封装的vo 
  18.      * @param map 需要转换的map 
  19.      * @return 已经封装好数据的vo(object) 
  20.      */  
  21.     public static  Object MapToBean(Object bean, Map map) {  
  22.         Map methods = new HashMap();  
  23.         Method m[] = bean.getClass().getMethods();  
  24.         for (int i = 0; i < m.length; i++) {  
  25.             Method method = m[i];  
  26.             String methodName = method.getName().toUpperCase();  
  27.             methods.put(methodName, method);  
  28.         }  
  29.   
  30.         Iterator it = null;  
  31.         String key = "";  
  32.         it = map.keySet().iterator();  
  33.         while (it.hasNext()) {  
  34.             key = (String) it.next();  
  35.             String name = "GET" + key.toUpperCase();  
  36.             if (methods.containsKey(name)) {  
  37.                 Method setMethod = (Method) methods.get("SET" + key.toUpperCase());  
  38.                 try {  
  39.                     if(setMethod!=null){  
  40.                         Object[] obj=null;  
  41.                         obj=new Object[1];  
  42.                         obj[0]=map.get(key);  
  43.                     setMethod.invoke(bean, obj);  
  44.                     }  
  45.                     else{  
  46.                         continue;  
  47.                     }  
  48.                 } catch (IllegalAccessException e) {  
  49.                     e.printStackTrace();  
  50.                 } catch (InvocationTargetException e) {  
  51.                     e.printStackTrace();  
  52.                 }  
  53.   
  54.             }  
  55.         }  
  56.         return bean;  
  57.     }  
  58. }  


此方法是将上面查到的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方法  方法名大小写不限 

 

转自:http://hfkiss44.iteye.com/blog/568525

这篇关于JDBC:如何将resultset的信息自动封装到pojo里面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400667

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复