使用JDBI ResultSetMapper

时间:2015-05-19 14:49:11

标签: java orm mapping jdbi

我有一个实体,我有一个EntityMapper,它映射了实体拥有的所有属性。

然后,在我的DAO界面中,我使用DB中的@SqlQuery提取

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

此问题的建议解决方案是什么?我希望每个实体只有一个映射器,并且实际上并不是一直都能获取所有的attrs。

1 个答案:

答案 0 :(得分: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;
    }

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

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

这样您就可以为每个实体设置单个映射器。您也可以查看此library