我正在使用以下内容将检索到的值添加到类中。所有值都将添加到该类的属性中,但是我正在使用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像这样的作品:
BeanProcessor.toBean
将ResultSet行转换为JavaBean。此实现使用反射和BeanInfo类将列名与bean属性名匹配。属性根据以下几个因素与列匹配:
从ResultSet返回SQL NULL时,原始bean属性设置为默认值。数字字段设置为0,布尔值设置为false。返回SQL NULL时,对象bean属性设置为null。这与ResultSet get *方法的行为相同。
地址可能不是可写属性。请检查一下。