2

我有一个实体,我有一个 EntityMapper 来映射该实体的所有属性。

然后,在我的 DAO 界面中,我使用 @SqlQuery 从数据库中获取

  • 有时所有实体的属性->这很好
  • 但有时我只获取某些属性--> 在这里映射器失败并出现“SQLException Column xxx not found”

这个问题的推荐解决方案是什么?我希望每个实体只有一个映射器,并且真的不会一直获取所有的属性。

4

1 回答 1

0
    private List<String> getFieldsPresentInResultSet(ResultSet rs) throws SQLException {
        List<String> fieldsPresentInResultSet = new ArrayList<>();
        ResultSetMetaData metaData = rs.getMetaData();
        for(int index =1; index <= metaData.getColumnCount(); index++) {
            fieldsPresentInResultSet.add(metaData.getColumnLabel(index));
        }
        return fieldsPresentInResultSet;
    }

使用此函数获取结果集中存在的所有字段。然后您可以检查结果集中是否存在字段。就像是,

  List<String> fields = getFieldsPresentInResultSet(rs);
  String field = fieldfields.contain("fieldName") ? rs.getString("fieldName") ? null ;

这样,您可以为每个实体拥有一个映射器。你也可以检查这个

于 2015-05-20T03:30:07.340 回答