将 simplejdbccall 结果集转换为 java 对象

Posted

技术标签:

【中文标题】将 simplejdbccall 结果集转换为 java 对象【英文标题】:Convert to simplejdbccall resultset to java objects 【发布时间】:2020-10-30 22:18:55 【问题描述】:

我正在调用 DB2 过程,它接受一个输入参数并返回一个结果集。 我如何将 O/P 映射到我的 pojo 类。 我必须将结果映射到下一个 pojo 类。

    simpleJdbcCall = new SimpleJdbcCall(jdbctemplate)
                    .withSchemaName("myschema")
                    .withProcedureName("DB2-PROC")
                    .declareParameters(
                            new SqlParameter("1", Types.VARCHAR)
                        );
                        
    Map<String, Object> map =   simpleJdbcCall.execute("2020-01-01");
    
    for (Map.Entry<String, Object> entry : map.entrySet()) 
  System.out.println("Entry value  is " + entry.getValue() );
    
        
        //my o/p
        Entry value  is [Col_1=abc, col_2=abc,col_2=xyz, col_2=abc,....];    

【问题讨论】:

【参考方案1】:

您可以使用returningResultSet(parameterName, rowMapper) 方法将值映射到对象。

这里有一些参考代码:

SimpleJdbcCall procedureActor = new SimpleJdbcCall(dataSource)
            .withSchemaName("myschema")
            .withProcedureName("DB2-PROC")
            .declareParameters(
                    new SqlParameter("1", Types.VARCHAR))
            .returningResultSet("mapObjRefrence", new RowMapper<Contact>() 
     
                @Override
                public Contact mapRow(ResultSet rs, int rowNum) throws SQLException 
                    YourPojo pojo = new YourPojo();
                     
                    pojo.setId(rs.getInt("col_1"));
                    pojo.setName(rs.getString("col_2"));
                    pojo.setEmail(rs.getString("col_2"));
                    pojo.setAddress(rs.getString("col_3"));
                    pojo.setTelephone(rs.getString("col_4"));
                     
                    return contact;
                
            );
     
    Map<String, Object> out = procedureActor.execute("2020-01-01");
     
    List<YourPojo> listPojos = (List<YourPojo>) out.get("mapObjRefrence");

您还可以检查多表结果:How to get multi table results using SimpleJDBCCall in spring?

【讨论】:

以上是关于将 simplejdbccall 结果集转换为 java 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 simpleJdbcCall 在存储过程中获取 XML 输出参数

将 Java 结果集转换为字符串数组

如何在 spring 中使用 SimpleJDBCCall 获取存储过程的结果以及两个结果表?

JPA:如何将原生查询结果集转换为 POJO 类集合

将结果集转换为字符串并放入列表

使用gson将结果集转换为json [重复]