Groovy-ban az adatbázishoz kapcsolódás:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB',
'testuser', 'test123', 'com.mysql.jdbc.Driver')
// Executing the query
SELECT VERSION which gets the version of the database
// Also using the eachROW
method to fetch the result from the database
sql.eachRow('SELECT
VERSION()'){ row ->
println row[0]
}
sql.close()
}
}
Tábla létrehozás:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
def
sqlstr = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
sql.execute(sqlstr);
sql.close()
}
}
Tábla értékek beszúrása:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit
= false
def
sqlstr = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME) VALUES
('Mac', 'Mohan', 20, 'M', 2000)"""
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully
committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction
rollback")
}
sql.close()
}
}
Adatbázis lekérdezés (listázás) futtatása:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
sql.eachRow('select
* from employee') {
tp ->
println([tp.FIRST_NAME,tp.LAST_NAME,tp.age,tp.sex,tp.INCOME])
}
sql.close()
}
}
Adatbázis tábla mező adatmódosítás:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args){
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test@123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit
= false
def
sqlstr = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M'"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully
committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction
rollback")
}
sql.close()
}
}
Adatbázis tábla tartalmának törlése:
import java.sql.*;
import
groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection
to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test@123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit
= false
def
sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully
committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction
rollback")
}
sql.close()
}
}
telepítés:
Csomagold ki egy program könyvtárba.
Ennek a könnyvtárnak az elérési utját állítsd be GROOVY_HOME környezeti változónak.
A PATH környezeti változót bővítsd ki a %GROOVY_HOME%/bin bejegyzéssel.
---- Fordítás
groovyc Hello.groovy
--
groovyc *.groovy *.java
---- Futtatás
java -cp %GROOVY_HOME%/embeddable/groovy-all-2.0.0.jar;. kl_class "Kecskemeti Lajos"
------------
---------- Előnye
---- egy lépésbe futtaható
groovy kl_minta.groovy
--
javac kl_minta.java
java kl_minta
---- rövidebb összevont kód
Book = new Book ( id: 1, title: "Lajos Groovy mintája")
---- Automatikus implicid includ-olás
java.util.*, java.lang.*, java.net.*, java.io.*, groovy.lang.*, and groovy.util.*.
,java.util.regex.*, java.math.BigDecimal, java.math.BigInteger
---- érvényesítés használata minden tipusnál
def list = [1, 2, 'x'] // list of 3 elements
assert list.size() == 3
---- built-in builder hasnálata
def builder = new groovy.xml.MarkupBuilder()
builder.employee {
name 'Kecskeméti Lajos'
gender 'male'
}
---- closure-k használata, nevesített változó ujra használata
def name = "Dani"
def printClosure = { println "Hello, ${name}" }
printClosure()
name = "Tomi"
printClosure()
---- metaprogramozás
String.metaClass.firstUpper = { -> return delegate[0].toUpperCase() + delegate[1..delegate.length() - 1] }
println "iiii".firstUpper()
---- json formátum támogatás
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
def result = slurper.parseText('{"person":{"name":"Kecskeméti Lajos","age":40,"cars":["bmw","ford"]}}')
println result.person.name
println result.person.age
println result.person.cars.size()
println result.person.cars[0]
println result.person.cars[1]
---- Lists és Maps használat támogatás
authors = [ 'Kecskeméti', 'Lajos', 'Dani', 'Tomi' ]
println authors
println authors[0]
---- Minde objektum is egyben (nem kell boxing és unboxing)
println(2 + 2 )
println(2.plus(2))
---- Zárójelezés és pontosvesszőzés elhagyható
println ("hello");
println "hello"
---- Szövegek interpolációjának támogatása
def lastName = "Lajos"
def fullname = "Kecskeméti ${lastName} " // string interpolation (also called Gstring)
println fullname
---- Satikus és dinamikus tipus kezelés
def var = 10 //dinamikus
var = "It's a String"
--
String s1 = " A String " // statikus
s2 = "Another String "
---- Statikus Byte kod generálás
import groovy.transform.CompileStatic
@CompileStatic
int doubleIt(int num) {
2* num
}
assert doubleIt(2) == 4
---- Getter és setter használat
class Employee{
String name
}
Employee emp = new Employee()
emp.setName("John Doe" )
println emp.name
---- MAIN metodus elhagyható
package kl;
public class Todo {
String name
String note
}
// public static void main(String[] args) { // -- elhagyható !!--
def todos = [ new Todo(name:"1", note:"one"), new Todo(name:"2", note:"two"), new Todo(name:"3", note:"three") ]
todos.each {
println "${it.name} ${it.note}"
} //each
// } //main
//}
---- Várakoztatás
Thread.sleep(1000) // várakozás
print "Hello!"
println 'Hello World!'
--
Map map = { 1 : "Bill", 2 : "Doug", 3 : "Bev" }
---// összes txt file melynek a tartalmában benne van a Hello szövegrész
println new File('.').files.findAll{ it.name.endsWith('.txt') && it.text.contains('Hello')}.collect{ it.name }
-- //könyvtárat listáz
// C:\Users\kecskemetil\Documents\kl_p\prg\groovy-2.5.2\bin\minta
dh = new File('../minta')
dh.eachFileRecurse {
println it
}
--- könyvtárat listáz teljes eléréi uttal
class FileExample {
static void main(String[] args) {
new File("../minta").eachFile() {
file->println file.getAbsolutePath()
}
}
}
----- Minták
package com.apress.bgg;
public class Todo {
String name
String note
public static void main(String[] args) {
def todos = [ new Todo(name:"1", note:"one"), new Todo(name:"2", note:"two"), new Todo(name:"3", note:"three") ] // ArrayList jelőlésesére : []
todos.each {
println "${it.name} ${it.note}"
} //each
} //main
}
---
------ rövidítések:
Command Line Interface (CLI)
Megjegyzések
Megjegyzés küldése