使用Groovy的sql模塊操作mysql進行多種查詢


接數據庫,這里要創建一個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`") //返回第一個

  

 最后貼上表結構:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM