Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBCTempalte行映射器读取postgres表中的jsonb列_Java_Postgresql_Spring Boot_Jdbctemplate_Rowmapper - Fatal编程技术网

Java JDBCTempalte行映射器读取postgres表中的jsonb列

Java JDBCTempalte行映射器读取postgres表中的jsonb列,java,postgresql,spring-boot,jdbctemplate,rowmapper,Java,Postgresql,Spring Boot,Jdbctemplate,Rowmapper,我正在使用JDBCTemplate读取Postgres表,该模板具有以下模式: 订单ID |订单名称|功能|额外功能| orderid:整数 订单名称:文本 特色:josnb 额外功能:jsonb 订购DTO: 现在,在执行从public.orders执行SELECT*查询时,我编写了如下行映射器: jdbcTemplate.query(“从public.orders中选择*”,new OrderRowMapper()) 行映射器 public class OrderRowMapper imp

我正在使用JDBCTemplate读取Postgres表,该模板具有以下模式:

订单ID |订单名称|功能|额外功能|

orderid:整数
订单名称:文本
特色:josnb
额外功能:jsonb

订购DTO:

现在,在执行从public.orders执行SELECT*查询时,我编写了如下行映射器:
jdbcTemplate.query(“从public.orders中选择*”,new OrderRowMapper())

行映射器

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?
  }
}
公共类OrderRowMapper实现了RowMapper{
@凌驾
公共顺序映射行(ResultSet rs,int rowNum)抛出SQLException{
订单=新订单();
order.setOrderid(rs.getInt(“orderid”);
order.setFeatures()//如何读取jsonbcolumn?
}
}
我可以设置除jsonb列之外的所有值,我不知道如何实现行映射器,请帮助。



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?
  }
}
公共类OrderRowMapper实现了RowMapper{ 私有对象映射器映射器=新对象映射器(); @凌驾 公共顺序映射行(ResultSet rs,int rowNum)抛出SQLException{ List features=objectMapper .readValue(rs.getString(“功能”), 新类型引用(){}); 订单=新订单(); order.setOrderid(rs.getInt(“orderid”); order.setFeatures()//如何读取jsonbcolumn? } }
您是否尝试过
ObjectMapper mapper=new ObjectMapper();List features=objectMapper.readValue(rs.getString(“features”),新类型引用>(){})您的解决方案正在运行。(Y) 
ObjectMapper
是线程安全的,因此您可以引用它
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?
  }
}

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