gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:50:25 25 4
gpt4 key购买 nike

我正在使用以下内容将检索到的值添加到类中。所有值都将添加到类的属性中,但我正在使用组合(类中有一个类对象),并且它不会在输出中显示任何内容。

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, boolean 值设置为 false。当返回 SQL NULL 时,对象 bean 属性设置为 null。这与 ResultSet get* 方法的行为相同。

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

关于java - 如何将结果集复制到对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com