JDBCTempalte RowMapper读取postgres表中的jsonb列

时间:2020-07-09 11:53:00

标签: java postgresql spring-boot jdbctemplate rowmapper


我正在使用具有以下架构的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,请帮忙。

1 个答案:

答案 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?
  }
}