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

浙公网安备 33010602011771号