連接數據庫,這里要創建一個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`") //返回第一個
最后貼上表結構: