我有一个实体,我有一个EntityMapper,它映射了实体拥有的所有属性。
然后,在我的DAO界面中,我使用DB中的@SqlQuery提取
此问题的建议解决方案是什么?我希望每个实体只有一个映射器,并且实际上并不是一直都能获取所有的attrs。
答案 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。