如何迭代List <dto>并动态获取DTO属性值?</dto>

时间:2011-07-12 13:06:25

标签: java list properties iteration

private void writeData(HSSFSheet sheet) {
        for (int i = 0; i < boltData.size(); i++) {
            HSSFRow row = sheet.createRow(rowCount);
            rowCount++;
            BoltDto boltDto = boltData.get(i);
            for (int j = 0; j < **${noOfattributesInMyEntity}**; j++) {
                HSSFCell cell = row.createCell(j);
                cell.setCellValue(new HSSFRichTextString(
                        (**boltDto.getXyz()**).trim()));
            }
        }
    }

我想要上面的东西。

我正在创建一个excel表,其中行数对应于List中的对象数。列数对应于DTO中的属性/属性数。

由于我的DTO有超过40个属性,我不想明确写。有什么工作吗?

2 个答案:

答案 0 :(得分:2)

您可以使用反射或(更好)commons-beanutils API(或提供类似功能的任何内容)。最简单的用法如下:

for (Object property : BeanUtils.describe(yourDto).keySet()) {
    Object value = BeanUtils.getProperty(yourDto, property.toString());
    // do whatever with the property value
}

答案 1 :(得分:0)

您可以使用reflection APIs查找成员和/或方法。

如果你真的想要接纳所有成员,这可能就足够了。如果您需要一些选择性之王,您可能需要DTO作者的合作,他们是否使用命名约定?还有其他元数据吗?