Ugrás a fő tartalomra

Groovy alapok 2

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