最近接触了一下groovy,网上的资料还是比较少的,而且比较旧。今天写个文章记录一下groovy环境配置和连接数据库,以及一个可能踩坑的地方。如果你会java,那你上手groovy很快,如果你不会java,那你自求多福。
作者写文章时,最新版本是4.0.6,windows和linux都点击这个下载。有一点需要注意的是groovy需要jdk环境,1.8+
首先配置 GROOVY_HOME
,是不是很熟悉,然后在path中增加 %GROOVY_HOME%\bin
这样就配置好了
执行 vi /etc/profile
在最底下增加如下配置,然后执行source /etc/profile
让配置生效
export GROOVY_HOME=/data/groovy-4.0.6 export PATH=$GROOVY_HOME/bin:$PATH
到这里环境变量就配置好了,验证一下,还是熟悉的配方 groovy -verison
环境配置好了,就来实战吧,编辑器可以用idea,提示还是比较友好的。
执行 groovy MysqlClassFunc.groovy
就可以执行。有没有像python
可以选择class,或者单个脚本。如果选择class就和java一样,你需要整个main方法运行,如果是脚本,就像python一样,直接写代码就可以运行。
class方式,如果会java看一眼就懂了,这不就是java么。
脚本就是单文件,从上到下执行,有没有像python
println 'hello word'
import groovy.sql.Sql
url = 'jdbc:mysql://127.0.0.1:3306/groovytst?useUnicode=true&characterEncoding=utf8'
driver = 'com.mysql.cj.jdbc.Driver'
username = 'root'
passwd = 'root'
//可以指定maven仓库
@GrabResolver(name = 'aliyun', root = 'https://maven.aliyun.com/repository/public')
//加载数据库连接驱动包
@Grab('mysql:mysql-connector-java:8.0.23')
@GrabConfig(systemClassLoader = true)
//创建sql实例
def sql = Sql.newInstance(url, username, passwd, driver)
rows = sql.rows('select * from testab')
println(rows)
println("共有${rows.size()}行数据")
rows.each { println(it) }
rows.each { println "name:${it['name']}" }
//可以指定maven仓库,不指定就去默认的maven仓库去下载
@GrabResolver(name = ‘aliyun’, root = ‘https://maven.aliyun.com/repository/public’)
//加载数据库连接驱动包,用过gradle的人是不是很眼熟,gradle就是用的groovy
@Grab(‘mysql:mysql-connector-java:8.0.23’)
对应的maven pom文件的写法
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
如果用脚本方式,参考上面的代码,如果class,稍微有点区别,参考下面的代码
import groovy.sql.Sql
@Grapes([
@GrabResolver(name = 'aliyun', root = 'https://maven.aliyun.com/repository/public'),
@Grab('mysql:mysql-connector-java:8.0.23'),
@GrabConfig(systemClassLoader = true)
])
class Mysqlcls {
static void main(String[] args) {
testStaticMysql()
}
void testMysql() {
testStaticMysql()
}
static void testStaticMysql() {
def url = 'jdbc:mysql://127.0.0.1:3306/groovytst?useUnicode=true&characterEncoding=utf8'
def driver = 'com.mysql.cj.jdbc.Driver'
def username = 'root'
def passwd = 'root'
def sql = Sql.newInstance(url, username, passwd, driver)
def rows = sql.rows('select * from testab')
println(rows)
println("共有${rows.size()}行数据")
rows.each { println(it) }
rows.each { println "name:${it['name']}" }
}
}
1.如果你print打印乱码
groovy --encoding=UTF-8 mysql.groovy
–encoding=UTF-8 要放到源文件之前,可以解决乱码问题
2.jar下载目录
默认的包会下载到 .groovy/grapses下,如果你服务器不能连接外网,那你就把本地的jar包直接传上去,如果想从指定目录读取
groovy -Dgrape.root=/repo/grape mysql.groovy
-Dgrape.root=/repo/grape 指定jar包位置