FieldsPresentInResultSet

FieldsPresentInResultSet

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

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


有时是所有实体的属性->很好
但有时我仅获取某些属性->,而映射器在此失败,并显示“找不到SQLException列xxx”


推荐的解决方案是什么?我想每个实体只有一个映射器,实际上并不能一直获取所有属性。

最佳答案

    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;
    }


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

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


这样,每个实体可以有一个映射器。您也可以检查此library

09-12 12:34