Groovy环境变量配置Mysql连接

内容纲要

最近接触了一下groovy,网上的资料还是比较少的,而且比较旧。今天写个文章记录一下groovy环境配置和连接数据库,以及一个可能踩坑的地方。如果你会java,那你上手groovy很快,如果你不会java,那你自求多福。

一、下载sdk

作者写文章时,最新版本是4.0.6,windows和linux都点击这个下载。有一点需要注意的是groovy需要jdk环境,1.8+

官网下载地址, 如果下载不下来,可以点击国内下载地址

image.png

二、环境变量

windows环境

首先配置 GROOVY_HOME,是不是很熟悉,然后在path中增加 %GROOVY_HOME%\bin 这样就配置好了

image.png

image.png

linux环境

执行 vi /etc/profile 在最底下增加如下配置,然后执行source /etc/profile让配置生效

export GROOVY_HOME=/data/groovy-4.0.6
export PATH=$GROOVY_HOME/bin:$PATH

到这里环境变量就配置好了,验证一下,还是熟悉的配方 groovy -verison

image.png

image.png

三、实战

环境配置好了,就来实战吧,编辑器可以用idea,提示还是比较友好的。

执行 groovy MysqlClassFunc.groovy 就可以执行。有没有像python

可以选择class,或者单个脚本。如果选择class就和java一样,你需要整个main方法运行,如果是脚本,就像python一样,直接写代码就可以运行。

image.png

class方式,如果会java看一眼就懂了,这不就是java么。

file

脚本就是单文件,从上到下执行,有没有像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']}" }

四、连接mysql

//可以指定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包位置

image.png

标签

发表评论