so finden Sie eine Zeichenfolge im groovy-Liste
Frage von einem groovy-Neuling:
sql eingeleitet wird wie folgt
final Binding binding = new Binding();
binding.setProperty("sql", sql);
final groovy.sql.Sql sql = Sql.newInstance(dbConfig.getUrl(), dbConfig.getUserName(), dbConfig.getPasswd(),"oracle.jdbc.OracleDriver");
Ich bin beim ausführen einer Abfrage in groovy wie in diesem
def listOfRows = sql.rows (select column1 from table1);
listOfRows, wenn Sie gedruckt zeigt Inhalte wie [[column1_name:value1], [column1_name:value2], [column1_name:value3]]
Möchte ich überprüfen, ob value2
(eine Zeichenfolge) gibt es in der zurückgegebenen Liste der Werte aus der obigen Abfrage.
Ich habe versucht zu tun listOfRows.contains('value2')
und listOfRows.find('value2')
,
es beschwert sich, dass die Methode nicht existiert für Listen..
was ist der beste Weg, dies zu tun ?
BEARBEITET: ich habe korrigiert die Liste der Werte. Was zurückgegeben wird, ist List<GroovyResultSet>
und außerdem habe ich die definition von sql.
- Was ist Ihre definition von
sql
? - Was bedeutet listOfRows eigentlich enthalten? Es kann nicht sein
[column1_name:value1, column1_name:value2, column1_name:value3]
- Ich schließe mich @tim_yates,
[column1_name:value1, column1_name:value2, column1_name:value3]
ist noch nicht einmal eine Karte, dakeys
sind die gleichen. Sind Sie immer eine Liste der Karten mit dem Schlüssel als column1, column2, ....? - Ich stehe korrigiert, was zurückgegeben wird list<GroovyResultSet> Korrektur - listOfRows, wenn Sie gedruckt zeigt Inhalte wie [[column1_name:Wert1], [column1_name:Wert2], [column1_name:value3]]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich schlage vor, Sie nehmen einen Blick auf groovy-Dokumentation, insbesondere für die Sammlungen der Dokumentation (sowohl tutorial und JDK/GDK).
in diesem Fall, die meisten speziell angepasste Lösung wäre die Verwendung
Collection#find()
... mit so etwas wieWelche übersetzt werden können in Menschen-lesbaren
finde das erste element in dieser Auflistung die Zeichenfolge enthält ":Wert2".
Werden Sie wahrscheinlich wollen,
listOfRows.column1
(equivalnet zulistOfRows['column1']
wandelt die Karte in einer Liste mit dem Inhalt aller Zeilen für die 'column1'.Sind Sie wahrscheinlich aufrufen diese Methode die einen GString (beachten Sie, dass GString != String) als argument. Nach diese Frage, eine Zeichenfolge in einfache Anführungszeichen ist ein standard-java-string, und einen string in doppelten Anführungszeichen ist ein templatable string.
Versuchen Sie dies:
was ich am Ende tun, ist die folgende :
Durchlaufen der listOfRows, erhalten Sie alle Werte für column1 von jedem GroovyResultSet in eine listOfValues ,dann schauen Sie bei meinen Werten in der Liste.