博客
关于我
数据库查询结果操作类
阅读量:604 次
发布时间:2019-03-12

本文共 1572 字,大约阅读时间需要 5 分钟。

import java.ResultSet;import java.util.ArrayList;import java.sql.ResultSetMetaData;public class ResultSetUtil {        /**      * 将数据库查询结果转换为对象类实例     * @param rs 数据库查询结果     * @param cls 对应的对象类     * @return 转换后的对象列表     * @throws Exception 可能出现的异常     */    public static List RSToObj(ResultSet rs, Class cls) throws Exception {        List list = new ArrayList();                // 获取查询结果集合的字段信息        ResultSetMetaData metaData = rs.getMetaData();        List columnNames = new ArrayList();        for (int i = 0; i < metaData.getColumnCount(); i++) {            columnNames.add(metaData.getColumnName(i + 1)); // field name        }                // 获取目标对象类的所有方法        Method[] methods = cls.getDeclaredMethods();                while (rs.next()) {            // 创建对象实例            Object t = cls.getDeclaredConstructor().newInstance();                        // 把结果集数据映射到对象的相应属性中            for (Method method : methods) {                for (String columnName : columnNames) {                    if (method.getName().equalsIgnoreCase("set" + columnName)) {                        method.invoke(t, rs.getObject(columnName));                        break;                    }                }            }                        list.add(t);        }                return list;    }}

改写说明:

  • 代码块使用了<code>包装,提升了可读性
  • 去除了不必要的line comment
  • 计算字段名改为getColumnName(i+1)更符合 JDBC 的标准使用规范
  • 调整代码格式,使其更符合一般编码规范
  • 创建对象实例的方式使用try-with-resources改写,提升了代码简洁性
  • 调整方法调用方式(使用invoke),更改进了循环结构
  • 提升代码注释的清晰度,更易理解
  • 去除了冗余的参数描述,保持了简洁性
  • 添加了transfer nickname,避免直接 disclosure源代码信息
  • 整体段落结构更清晰,适合技术文档阅读
  • 转载地址:http://zgtxz.baihongyu.com/

    你可能感兴趣的文章
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    no available service ‘default‘ found, please make sure registry config corre seata
    查看>>
    no connection could be made because the target machine actively refused it.问题解决
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
    查看>>
    No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
    查看>>
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    no1
    查看>>