当前位置: 首页 > 面试题库 >

如何将结果集复制到对象?

阮华美
2023-03-14
问题内容

我正在使用以下内容将检索到的值添加到类中。所有值都将添加到该类的属性中,但是我正在使用compisition(在类中具有class的对象),并且在输出中不显示任何内容。

class employee 
{
....
private Address address = new Address();
.....
}
 ...
Employee emp = new Employee();
        try {

            ps = con.prepareStatement("select * from employee,address "
                    + "WHERE employee.username = ? AND "
                    + "employee.ADD_ID = address.ID");

            ps.setString(1, username);
            ResultSet r = ps.executeQuery();
            if (r.next()) {

                BeanProcessor bp = new BeanProcessor();
                emp = bp.toBean(r,Employee.class);
                System.out.println("blockkkk:"+emp.getAddress().getBlock());  
                                            //output of above line is blockkkk:null
            }

            con.close();
            ps.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());

        }
       return emp;

地址类别如下:

  public class Address {
    .....
    private String block;
    ....
      public String getBlock() {
            return block;
        }

        public void setBlock(String block) {
            this.block = block;
        }
    ....
   }

问题答案:

BeanProcessor.toBean像这样的作品:

将ResultSet行转换为JavaBean。此实现使用反射和BeanInfo类将列名与bean属性名匹配。属性根据以下几个因素与列匹配:

  • 该类具有与列同名的可写属性。名称比较不区分大小写。
  • 可以使用ResultSet.get *方法将列类型转换为属性的set方法参数类型。如果转换失败(即,属性为int且列为Timestamp),则将引发SQLException。

从ResultSet返回SQL NULL时,原始bean属性设置为默认值。数字字段设置为0,布尔值设置为false。返回SQL
NULL时,对象bean属性设置为null。这与ResultSet get *方法的行为相同。

地址可能不是可写属性。请检查一下。



 类似资料:
  • 我试图通过这样做来创建现有对象的副本。不知何故,我总是通过引用而不是作为一个新对象创建一个副本。 在任何输入中输入一些数据 单击右上方的按钮 选择重复rn(重复) 编辑副本的一个字段 更改也会立即在第一个对象字段集中执行操作。

  • 我有一个用户类,有16个属性,比如名字,姓氏,出生日期,用户名,密码等...这些都存储在MySQL数据库中,当我想要检索用户时,我使用ResultSet。我想将每一列映射回用户属性,但我这样做的效率似乎非常低。例如,我正在做: 也就是说,我检索所有的列,然后通过将所有的列值插入用户构造函数来创建用户对象。 有人知道更快、更整洁的方法吗?

  • 我已经成功地完成了在Amazon EMR上的工作,现在我想将结果从复制到,但是我遇到了一些问题 这是代码(--steps) 这是日志:

  • 问题内容: 我试图捕获与表单一起发送的文件,并在对其进行保存之前对其执行一些操作。因此,我需要在temp目录中创建此文件的副本,但是我不知道如何到达它。Shutil的功能无法复制此文件,因为没有路径。那么,是否有其他方法可以执行此操作? 我的代码: 引起: 和调试: 问题答案: 这是类似的问题,可能会有所帮助。

  • 问题内容: 我想基于该表的数量从表中的一行获得多个结果。 因此,我希望查询的输出为A的12倍(无论是否使用计数器)和B的138倍。我已经看到了在DB上添加计数表的解决方案,但我无法做到这一点。 问题答案: 您可以使用相关的分层查询: 或递归子查询分解子句: 因此对于测试数据: 这两个解决方案都将输出:

  • 我正在从数据库中读取pdf文件列表,对它们进行解析,并用它们执行一些任务 当我阅读这个pdf列表时,我发现从pdf中提取图像需要花费更多的时间,而且我不需要阻止我的主线程来阅读图像。所以我想在一个单独的线程中执行提取图像 我想从一个又一个pdf中读取图像,而不是一次将所有pdf加载到内存中(由于内存问题)。所以我只想要两条线;一个应该是主线程(从pdf中读取一些文本并执行其他操作),另一个应该是提