小编典典

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

java

我正在使用以下内容将检索到的值添加到类中。所有值都将添加到该类的属性中,但是我正在使用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;
        }
    ....
   }

阅读 168

收藏
2020-11-30

共1个答案

小编典典

BeanProcessor.toBean像这样的作品:

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

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

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

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

2020-11-30