連接數據庫,這里要創建一個sql實例來操作數據庫,必須加載jdbc驅動包,使用兩個注解,否則會報錯:
import groovy.sql.Sql
url='jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf8'
driver='com.mysql.jdbc.Driver'
username='root'
passwd='123456'
//可以指定maven倉庫
//@GrabResolver(name = 'aliyun', root = 'http://maven.aliyun.com/nexus/content/groups/public/')
//加載數據庫連接驅動包
@Grab('mysql:mysql-connector-java:5.1.25')
@GrabConfig(systemClassLoader = true)
//創建sql實例
def sql = Sql.newInstance(url, username, passwd, driver)
查詢:
eachRow: 對結果在閉包中進行處理:
sql.eachRow("select * from `user`") {
println it[0] //可以按表字段從左到右依次下標訪問
println it.name //直接按字段名訪問
}
//支持元數據閉包顯示
sql.eachRow("select * from `user`",{ meta->
//元數據閉包只會調用一次
meta.columnCount.times {
print meta.getColumnName(it+1)+" "
print meta.getColumnClassName(it+1)+" "
print meta.getColumnDisplaySize(it+1)+" "
print meta.getColumnType(it+1)+"---"
println meta.getColumnTypeName(it+1)
}
}) {
//可以按表字段從左到右依次下標訪問或者字段名字訪問
println it[0]+" "+it.name
}
可以看到輸出:

還有rows等查詢方法,支持非常多的重載方法,可以根據需求傳入各種參數,和jdbc用法基本都一樣,比如:
println sql.rows(['id':3],"select * from `user` where id>:id").size() //map參數
println sql.rows("select * from `user` where id>?",[3]).size() // list參數
println sql.firstRow("select * from `user`") //返回第一個

最后貼上表結構:

