From a1d50fe4a122483de4ce81c9fa155a32691e56e7 Mon Sep 17 00:00:00 2001 From: hitansh-shah98 <98865124+hitansh-shah98@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:23:29 +0530 Subject: [PATCH] BAEL-6674 Added code for mybatis sqlscript (#14487) --- mybatis/pom.xml | 7 ++ .../com/baeldung/mybatis_sqlscript/Main.java | 118 ++++++++++++++++++ mybatis/src/main/resources/script.sql | 10 ++ 3 files changed, 135 insertions(+) create mode 100644 mybatis/src/main/java/com/baeldung/mybatis_sqlscript/Main.java create mode 100644 mybatis/src/main/resources/script.sql diff --git a/mybatis/pom.xml b/mybatis/pom.xml index 4cd705c917..1670dc5410 100644 --- a/mybatis/pom.xml +++ b/mybatis/pom.xml @@ -18,9 +18,16 @@ mybatis ${mybatis.version} + + com.h2database + h2 + ${h2database.version} + + + 2.2.220 3.2.2 diff --git a/mybatis/src/main/java/com/baeldung/mybatis_sqlscript/Main.java b/mybatis/src/main/java/com/baeldung/mybatis_sqlscript/Main.java new file mode 100644 index 0000000000..ae0d83a153 --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis_sqlscript/Main.java @@ -0,0 +1,118 @@ +package org.baeldung.mybatis_sqlscript; + +import org.apache.ibatis.jdbc.ScriptRunner; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.*; +import java.util.List; +import java.util.Scanner; + + +public class Main { + // JDBC driver name and database URL + static final String JDBC_DRIVER = "org.h2.Driver"; + static final String DB_URL = "jdbc:h2:mem:testDB"; + + // Database credentials + static final String USER = "sa"; + static final String PASS = ""; + private static Connection conn; + private static Statement stmt; + + public static void main(String[] args){ + try { + //Register JDBC driver + Class.forName(JDBC_DRIVER); + + //Open a connection + System.out.println("Connecting to database..."); + conn = DriverManager.getConnection(DB_URL, USER, PASS); + stmt = conn.createStatement(); + } + catch(Exception e) + { + //Handle errors for Class.forName + e.printStackTrace(); + } + + try { + Scanner sc = new Scanner(System.in); + System.out.println("Enter full path of the file: "); + String filePath= sc.next(); + Path path = Paths.get(filePath); + + System.out.println("Press 1: Execute SQL Script Using Plain Java: "); + System.out.println("Press 2: Execute SQL Script Using Apache iBatis: "); + List sqlLines=Files.readAllLines(path); + int choice = sc.nextInt(); + + switch (choice) + { + case 1: + // Running SQL Script using Plain Java + for (String sql : sqlLines) { + System.out.println("Query: " + sql); + + if (sql.contains("SELECT")) { + ResultSet rs = stmt.executeQuery(sql); + System.out.print("ID" + "\t" + "Name" + "\t" + "Surname" + "\t" + "Age"); + System.out.println(""); + // Extract data from result set + while (rs.next()) { + // Retrieve by column name + int id = rs.getRow(); + int age = rs.getInt("age"); + String name = rs.getString("name"); + String surname = rs.getString("surname"); + + // Display values + System.out.print(id + "\t" + name + "\t" + surname + "\t" + age); + System.out.println(""); + } + } + else + stmt.execute(sql); + } + + break; + + case 2: + ScriptRunner scriptExecutor = new ScriptRunner(conn); + BufferedReader reader = new BufferedReader(new FileReader(filePath)); + scriptExecutor.runScript(reader); + reader.close(); + break; + + + + + } + + + + } + catch(SQLException se) + { + //Handle errors for JDBC + se.printStackTrace(); + } catch(Exception e) + { + //Handle errors for Class.forName + e.printStackTrace(); + } + System.out.println("Reached End of Code!"); + } + +} + + + + + + diff --git a/mybatis/src/main/resources/script.sql b/mybatis/src/main/resources/script.sql new file mode 100644 index 0000000000..fb3bf296f3 --- /dev/null +++ b/mybatis/src/main/resources/script.sql @@ -0,0 +1,10 @@ +CREATE TABLE CUSTOMER (id number, name varchar(20), surname varchar(20), age number); +INSERT INTO CUSTOMER VALUES (1, 'John', 'Doe', 25); +INSERT INTO CUSTOMER VALUES (2, 'Jill', 'Johnson', 18); +INSERT INTO CUSTOMER VALUES (3, 'Jake', 'Peralta', 29); +INSERT INTO CUSTOMER VALUES (4, 'Jack', 'Ryan', 35); +UPDATE CUSTOMER SET AGE = 19 WHERE name = 'Jake'; +SELECT * FROM CUSTOMER; +DELETE FROM CUSTOMER WHERE name='John'; +SELECT * FROM CUSTOMER ORDER BY NAME; +SELECT * FROM CUSTOMER WHERE AGE > 18; \ No newline at end of file