我正在使用具有以下架构的JDBCTemplate来读取Postgres表:
orderid | order_name |功能| extra_features |
orderid:整数
order_name:文本
功能:josnb
extra_features:jsonb
订购DTO:
public class Order{
private Integer orderid;
private String orderName;
List<Features> features;
List<ExtraFeatures> extraFeatures;
....
getter & setter
}
功能DTO:
public class Features{
private String featureName:
private String featureValuel
}
现在,在执行 SELECT * FROM public.orders 查询时,我正在编写rowMapper,如下所示:
jdbcTemplate.query("SELECT * FROM public.orders", new OrderRowMapper())
RowMapper
public class OrderRowMapper implements RowMapper<Order>{
@Override
public Order mapRow(ResultSet rs, int rowNum) throws SQLException{
Order order = new Order();
order.setOrderid(rs.getInt("orderid"));
order.setFeatures()// how to read jsonbcolumn?
}
}
我能够设置除jsonb列以外的所有值,我不知道该如何实现RowMapper,请帮忙。
答案 0 :(得分:1)
public class OrderRowMapper implements RowMapper<Order>{
private ObjectMapper mapper = new ObjectMapper();
@Override
public Order mapRow(ResultSet rs, int rowNum) throws SQLException{
List<Features> features = objectMapper
.readValue(rs.getString("features"),
new TypeReference<List<Features>>(){});
Order order = new Order();
order.setOrderid(rs.getInt("orderid"));
order.setFeatures()// how to read jsonbcolumn?
}
}