当前位置: 首页 > 知识库问答 >
问题:

从数据库SQL查询创建Java对象

羊舌志
2023-03-14
CallableStatementCallback<Integer> csc = new CallableStatementCallback<Integer>() {
        @Override
        public Integer doInCallableStatement(CallableStatement cs) 
                       throws SQLException, DataAccessException {
            cs.execute();

            ResultSet rs = cs.getResultSet();
            if (rs != null && rs.next()) {
                SomePojoClass spc = new SomePojoClass();

                spc.setFirstValue(rs.getLong("first")); //column names from table
                spc.setSecondValue(rs.getString("second"));
                spc.setThirdValue(rs.getString("third"));

                spcList.add(spc);
              return 1;
            }
          return 0;
        }
    };
 [parent row 1] - [child row 1] (returned as one row obviously)
 [parent row 1] - [child row 2]
 [parent row 2] - [child row 1]
 [parent row 2] - [child row 2]
 [parent row 2] - [child row 3]
 [parent row 3] - [child row 1]

这是获得SQL结果集的一个非常常见的方法,因为一对多的关系······对于一个相当简单的结构执行冗余查询似乎是不必要的(而且可能是低效的)。是否有一种已建立的简单的方法将其解析为java对象?也就是说,我不想迭代ResultSet类并为每一行创建和设置一个新对象,而是要迭代集合并为每一个父行创建一个新对象,为每一个子行创建一个新对象。

例如,一种方法是按父主键对查询进行排序,然后仅当父id更改时才生成新的父对象,但仍为每一行创建新的子对象,并在下一行的父id更改时将父对象和子对象绑定在一起。但我不知道这样做是否正确。

共有1个答案

申阳伯
2023-03-14

这是获取SQL结果集的一种非常常见的方法,因为一对多的关系······对于一个相当简单的结构执行冗余查询似乎是不必要的(而且可能是低效的)。

我同意。在这种情况下,您必须执行n附加查询,对于父查询结果中的每一行执行一个查询,以获取子记录。或者在子句中使用带有父ID的一次选择所有子记录,然后以某种方式将它们映射回父记录。不管你用哪种方式切都很丑。

是否有一种已建立的简单的方法将其解析为java对象

 类似资料:
  • 我确信这是一个简单的SQLContext问题,但我在Spark docs或Stackoverflow中找不到任何答案 我想从MySQL上的SQL查询创建一个Spark数据框 例如,我有一个复杂的MySQL查询,如 我想要一个带有X、Y和Z列的数据帧 我想出了如何将整个表加载到Spark中,然后可以将它们全部加载,然后在那里进行连接和选择。然而,这是非常低效的。我只想加载SQL查询生成的表。 这是我

  • 我在Mariadb有大量的数据。我需要从查询创建转储文件。到目前为止我有这样的东西。

  • 但是首先,我们要去为数据库创建model类。你还记得我们之前所见的map委托的方式?我们要把这些属性直接映射到数据库中,反过来也一样。 我们先来看下CityForecast类: class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayFor

  • 问题内容: 是否可以从Java创建MySQL数据库? 我只看过这样的连接URL示例,其中在URL中指定了数据库名称: 当我只有登录名和密码时,如何创建MySQL数据库? 问题答案: jdbc连接中不需要数据库,因此您可以执行以下建议的操作:http://forums.mysql.com/read.php?39,99321,102211#msg-102211和http://marc.info /?l

  • 问题内容: 我的代码有问题。 像这样的情况: 我有一个下拉列表,如果选择“个人”,则会出现新的下拉列表,其中包含从数据库查询中检索到的数据;如果选择“公开”,则该下拉列表将消失。 这样的HTML代码: 查询如下: 像这样的JavaScript代码: 我不知道如何将值/结果发送到javascript代码(选择选项中的值和名称)。 问题答案: 在javascript中,您必须对您的php文件进行操作:

  • 我正在创建一个电子商务网站,该网站的产品具有多个属性(大小、颜色等)因此,每个属性也有许多值(对于大小,这些值是:small、medium、large等) 我有一个ID数组来表示属性,如下所示: 然后我想查询我的数据库中的每个id以获取该属性的值并创建结果的多维数组,如下所示: 到目前为止,我得到的是: 我最终想要实现的是获得产品的所有属性组合(小红色条纹、小绿色条纹、小蓝色条纹等)