当前位置: 首页 > 面试题库 >

groovy sql eachRow和rows方法

何禄
2023-03-14
问题内容

我是grails和groovy的新手。谁能给我解释一下这两种groovy sql方法之间的区别

sql.eachRow
sql.rows

另外,哪个更有效?

我正在开发一个从数据库中检索数据(结果集非常大)并将其写入CSV文件或返回JSON格式的应用程序。

我想知道使用上面提到的两种方法中的哪一种可以更快,更有效地完成该过程


问题答案:

任何人都可以向我解释这两种常规sql方法sql.eachRow sql.rows之间的区别

由于每个方法都有大量的重载版本,因此很难准确地确定您要引用的2个方法。但是,在所有情况下,eachRow均不返回任何内容

void eachRow(String sql, Closure closure)

rows返回行列表

List rows(String sql)

因此,如果使用eachRow,则作为第二个参数传入的闭包应该处理每一行,例如

sql.eachRow("select * from PERSON where lastname = 'murphy'") { row ->
    println "$row.firstname"
}

而如果使用rows行,则返回行,因此应由调用方处理,例如

rows("select * from PERSON where lastname = 'murphy'").each {row ->
    println "$row.firstname"        
}

另外,哪个更有效?

这个问题几乎无法回答。即使我自己实现了这些方法,也无法知道哪种方法 对您 会更好 因为我不知道

  • 您正在使用什么硬件
  • 您要定位的JVM
  • 您正在使用什么版本的Groovy
  • 您将传递什么参数
  • 此方法是否成为应用程序性能的瓶颈

或其他无法直接从源代码确定的影响方法性能的其他因素。你可以得到一个有用的答案的问题,其方法是更有效的唯一方式 对你 是通过测量每个的性能。

尽管上面已经说了很多,但是如果两者之间的性能差异有任何重大变化,我会感到惊讶,因此,如果我是您,我会选择您认为更方便的任何一个。如果以后发现此方法是性能瓶颈,请尝试使用另一个方法(但是我打赌您要花一美元到一毛钱,这没什么关系)。



 类似资料:
  • Rows方法和Iterate方法类似,提供逐条执行查询到的记录的方法,不过Rows更加灵活好用。 user := new(User) rows, err := engine.Where("id >?", 1).Rows(user) if err != nil { } defer rows.Close() for rows.Next() { err = rows.Scan(use

  • Sorting and filtering in Nested rows is currently not supported. Overview Quick setup Preparing the data source User interface Overview The Nested Rows plugin extends Handsontable with a new functiona

  • Overview Setup Example API examples Overview The Trim Rows plugin allows trimming specific rows from the table. Rows being trimmed aren't included in a DataMap (gets by the getData method) and they ar

  • Overview Setup Additional options Example API examples Overview The Hidden Rows plugin allows hiding specific rows from the table. Rows being hidden are included in a DataMap (gets by the getData meth

  • You can fix the bottom rows of the table, by using the fixedRowsBottom config option. This way, when you're scrolling the table, the fixed rows will stay at the bottom edge of the table's container. E

  • Below example shows how cell renderers can be used to present the template values for empty rows. When a cell in the empty row is edited, the beforeChange callback fills the row with the template valu