Учебники

Groovy — База данных

Модуль Groovy-sql Groovy обеспечивает абстракцию более высокого уровня по сравнению с текущей технологией JDBC Java. Groovy SQL API поддерживает широкий спектр баз данных, некоторые из которых показаны ниже.

  • HSQLDB
  • оракул
  • SQL Server
  • MySQL
  • MongoDB

В нашем примере мы будем использовать MySQL DB в качестве примера. Чтобы использовать MySQL с Groovy, в первую очередь необходимо загрузить jar-файл MySQL jdbc с сайта mysql. Форма циновки MySQL будет показана ниже.

mysql-connector-java-5.1.38-bin

Затем убедитесь, что добавили вышеупомянутый jar-файл в classpath на вашей рабочей станции.

Подключение к базе данных

Перед подключением к базе данных MySQL убедитесь в следующем:

  • Вы создали базу данных TESTDB.
  • Вы создали таблицу EMPLOYEE в TESTDB.
  • В этой таблице есть поля FIRST_NAME, LAST_NAME, AGE, SEX и INCOME.
  • Идентификатор пользователя «testuser» и пароль «test123» установлены для доступа к TESTDB.
  • Убедитесь, что вы загрузили файл jar mysql и добавили его в путь к классам.
  • Вы прошли учебник по MySQL, чтобы понять основы MySQL

В следующем примере показано, как подключиться к базе данных MySQL «TESTDB».

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()  
   } 
} 

При запуске этого скрипта он дает следующий результат —

5.7.10-log 
The Sql.newInstance method is used to establish a connection to the database.

Создание таблицы базы данных

Следующим шагом после подключения к базе данных является создание таблиц в нашей базе данных. В следующем примере показано, как создать таблицу в базе данных с помощью Groovy. Метод execute класса Sql используется для выполнения операторов в базе данных.

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() 
   } 
}

Операция вставки

Это необходимо, когда вы хотите создать свои записи в таблице базы данных.

пример

В следующем примере будет вставлена ​​запись в таблицу сотрудников. Код помещается в блок try catch, поэтому при успешном выполнении записи транзакция фиксируется в базе данных. Если транзакция завершается неудачно, выполняется откат.

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()
   } 
}

Предположим, если вы хотите просто выбрать определенные строки на основе критериев. В следующем коде показано, как можно добавить заполнитель параметра для поиска значений. Приведенный выше пример также может быть записан для получения параметров, как показано в следующем коде. Символ $ используется для определения параметра, который затем может быть заменен значениями при выполнении оператора sql.

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 firstname = "Mac"
      def lastname ="Mohan"
      def age = 20
      def sex = "M"
      def income = 2000  
		
      def sqlstr = "INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, 
         INCOME) VALUES " + "(${firstname}, ${lastname}, ${age}, ${sex}, ${income} )"
			
      try {
         sql.execute(sqlstr);
         sql.commit()
         println("Successfully committed") 
      } catch(Exception ex) {
         sql.rollback()
         println("Transaction rollback")
      }
		
      sql.close()
   }
}

ЧИТАЙТЕ Операцию

Чтение Операция с любой базой данных означает получение некоторой полезной информации из базы данных. Как только наше соединение с базой данных установлено, вы готовы сделать запрос в эту базу данных.

Операция чтения выполняется с использованием метода eachRow класса sql.

Синтаксис

eachRow(GString gstring, Closure closure) 

Выполняет заданный SQL-запрос, вызывая данное Закрытие для каждой строки набора результатов.

параметры

  • Gstring — оператор sql, который необходимо выполнить.

  • Закрытие — оператор закрытия для обработки строк, извлеченных из операции чтения. Выполняет заданный SQL-запрос, вызывая данное Закрытие для каждой строки набора результатов.

Gstring — оператор sql, который необходимо выполнить.

Закрытие — оператор закрытия для обработки строк, извлеченных из операции чтения. Выполняет заданный SQL-запрос, вызывая данное Закрытие для каждой строки набора результатов.

В следующем примере кода показано, как извлечь все записи из таблицы сотрудников.

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()
   } 
}

Выход из вышеуказанной программы будет:

[Mac, Mohan, 20, M, 2000.0]

Операция обновления

ОБНОВЛЕНИЕ Операция в любой базе данных означает обновление одной или нескольких записей, которые уже доступны в базе данных. Следующая процедура обновляет все записи, имеющие SEX как «M». Здесь мы увеличиваем ВОЗРАСТ всех мужчин на один год.

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()
   } 
}

УДАЛЕНИЕ Операция

Операция DELETE требуется, когда вы хотите удалить некоторые записи из вашей базы данных. Ниже приведена процедура удаления всех записей из EMPLOYEE, где возраст больше 20.

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()
   } 
}

Выполнение транзакций

Транзакции — это механизм, который обеспечивает согласованность данных. Транзакции имеют следующие четыре свойства —

  • Атомарность — либо транзакция завершена, либо ничего не происходит вообще.

  • Согласованность — транзакция должна начинаться в согласованном состоянии и оставлять систему в согласованном состоянии.

  • Изоляция — промежуточные результаты транзакции не видны за пределами текущей транзакции.

  • Долговечность — после совершения транзакции последствия сохраняются даже после сбоя системы.

Атомарность — либо транзакция завершена, либо ничего не происходит вообще.

Согласованность — транзакция должна начинаться в согласованном состоянии и оставлять систему в согласованном состоянии.

Изоляция — промежуточные результаты транзакции не видны за пределами текущей транзакции.

Долговечность — после совершения транзакции последствия сохраняются даже после сбоя системы.

Вот простой пример реализации транзакций. Мы уже видели этот пример из нашей предыдущей темы об операции DELETE.

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()

Совершить операцию

Операция commit — это то, что сообщает базе данных, что нужно продолжить операцию и завершить все изменения в базе данных.

В нашем примере выше это достигается с помощью следующего утверждения —

sql.commit()

Операция отката

Если вы не удовлетворены одним или несколькими изменениями и хотите полностью отменить эти изменения, используйте метод отката. В нашем примере выше это достигается с помощью следующего утверждения —

sql.rollback()

Отключение баз данных

Чтобы отключить соединение с базой данных, используйте метод close.