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