sql启动如下
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");
我在这样的groovy中运行查询
def listOfRows = sql.rows (select column1 from table1);
打印时listOfRows显示[[column1_name:value1], [column1_name:value2], [column1_name:value3]]
我想检查上面查询返回的值列表中是否存在value2
(一个字符串)。
我尝试过listOfRows.contains('value2')
和listOfRows.find('value2')
,
它抱怨列表中不存在该方法..
这样做的最佳方式是什么?
已编辑:我已更正打印值列表。返回的是List<GroovyResultSet>
我还添加了sql的定义。
答案 0 :(得分:1)
我建议你看一下groovy文档,特别是集合文档(tutorial和JDK / GDK)。
在这种情况下,最具体的解决方案是使用Collection#find()
...类似
listOfRows.find { it.contains(':value2') }
哪些可以翻译成人类可读的
找到此集合中的第一个元素,哪个字符串包含“:value2”。
答案 1 :(得分:1)
你可能想要
listOfRows.column1.contains( 'value2' )
答案 2 :(得分:0)
您可能正在调用this method,它将GString(请注意 GString!= String )作为参数。根据{{3}},单引号中的字符串是标准的java字符串,双引号中的字符串是可模板化的字符串。
'hello' //java.lang.String
"hello" //groovy.lang.GString
试试这个:
listOfRows.contains("value2")
答案 3 :(得分:0)
我最终做的是:
迭代listOfRows,将每个GroovyResultSet中column1的所有值都获取到listOfValues中,然后检查该列表中的值。
def listOfValues=[];
listOfRows.collect(listOfValues){it.getAt('column1')};
if(listOfValues.size()==3){
println('success');
}