连接数据库,这里要创建一个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

}

可以看到输出:

d87faa0dcd921d0fdc553659a5aa7605.png

还有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`") //返回第一个

a46f0ca64966a6569f754e46406dd0fb.png

最后贴上表结构:

dbc3668fbddddaff74fa2bedee7b5c5c.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐