用JDBI ResultSetMapper映射可选字段



我有一个实体,我有一个entityMapper映射所有实体具有的所有属性。

然后,在我的dao接口中,我正在使用db

的@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 ;

这样,每个实体可以拥有单个映射器。您也可以检查此库。

最新更新