我有一个实体,我有一个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 ;
这样,每个实体可以拥有单个映射器。您也可以检查此库。