groovy sql语法

 

 

链接数据库:

@GrabResolver(name = 'aliyun', root = 'http://maven.aliyun.com/nexus/content/groups/public/') 

@GrabConfig(systemClassLoader = true) 

@Grab(group = 'org.hsqldb', module = 'hsqldb', version = '2.3.4') 

class SqlDatabase { 

static void main(String[] args) { 

def sql = setUpDatabase() }

static Sql setUpDatabase() { 

def url = 'jdbc:hsqldb:mem:test' 

def user = 'sa' 

def password = '' 

def driver = 'org.hsqldb.jdbcDriver' 

def sql = Sql.newInstance(url, user, password, driver) 

return sql 

}

 

查询:

def expected = ['Dierk Koenig', 'Jon Skeet', 'Guillaume Laforge']

 

def rowNum = 0

sql.query('SELECT firstname, lastname FROM Author') { resultSet ->

  while (resultSet.next()) {

    def first = resultSet.getString(1)

    def last = resultSet.getString('lastname')

    assert expected[rowNum++] == "$first $last"

  }

}

Groovy也提供了几个方便的方法来获取数据。eachRow方法接受一个闭包参数,在闭包中,我们可以使用索引或成员访问符来获取每行的结果。

rowNum = 0

sql.eachRow('SELECT firstname, lastname FROM Author') { row ->

  def first = row[0]

  def last = row.lastname

  assert expected[rowNum++] == "$first $last"

}

如果结果只有一行,还可以使用firstRow方法,它会返回GroovyRowResult对象。我们可以使用该对象提供的方法获取数据。

def first = sql.firstRow('SELECT lastname, firstname FROM Author')

Groovy还提供了rows方法,它会返回一个GroovyRowResult对象列表。

List authors = sql.rows('SELECT firstname, lastname FROM Author')

assert authors.size() == 3

posted @ 2019-07-09 22:38  garraw  阅读(280)  评论(0)    收藏  举报