diff --git a/pom.xml b/pom.xml
index a318e63..7714520 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,13 @@
7.0.0
+
+
+ commons-dbutils
+ commons-dbutils
+ 1.8.1
+
+
org.mariadb.jdbc
diff --git a/src/main/java/dev/mduchene/App.java b/src/main/java/dev/mduchene/App.java
index 9c2d32d..c3fcc3d 100644
--- a/src/main/java/dev/mduchene/App.java
+++ b/src/main/java/dev/mduchene/App.java
@@ -1,6 +1,15 @@
package dev.mduchene;
import io.javalin.Javalin;
+import org.apache.commons.dbutils.DbUtils;
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.handlers.ScalarHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
/** Hello world! */
public class App {
@@ -12,6 +21,58 @@ public class App {
.password("root")
.build();
- var app = Javalin.create(cnf -> {}).get("/", ctx -> ctx.result("Hello World")).start(3001);
+ db.init();
+
+ var app = Javalin.create(cnf -> {});
+ app.before(
+ ctx -> {
+ Connection connection = db.getConnection();
+ ctx.attribute("connection", connection);
+ });
+ app.after(
+ ctx -> {
+ Connection connection = ctx.attribute("connection");
+ if (connection != null) {
+ DbUtils.commitAndCloseQuietly(connection);
+ }
+ });
+
+ app.exception(
+ Exception.class,
+ (e, ctx) -> {
+ LoggerFactory.getLogger(App.class).error("error", e);
+
+ Connection connection = ctx.attribute("connection");
+ if (connection != null) {
+ DbUtils.rollbackAndCloseQuietly(connection);
+ }
+ ctx.status(500);
+ });
+
+ app.get(
+ "/",
+ ctx -> {
+ var r = new QueryRunner();
+ Integer query =
+ r.query(
+ (Connection) ctx.attribute("connection"),
+ "SELECT 1",
+ resultSet -> {
+ System.out.println("hello world");
+ if (resultSet.next()) return resultSet.getInt(1);
+
+ return null;
+ });
+
+ ctx.result(query.toString());
+ });
+
+ app.get(
+ "/error",
+ ctx -> {
+ throw new RuntimeException("error");
+ });
+
+ app.start(3001);
}
}
diff --git a/src/main/java/dev/mduchene/Db.java b/src/main/java/dev/mduchene/Db.java
index d01f06f..55738d2 100644
--- a/src/main/java/dev/mduchene/Db.java
+++ b/src/main/java/dev/mduchene/Db.java
@@ -2,13 +2,19 @@ package dev.mduchene;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
+import org.slf4j.LoggerFactory;
import java.sql.Connection;
+import java.sql.SQLException;
public class Db {
private HikariDataSource dataSource;
private Db() {}
+ public void init() {
+
+ }
+
public static class Builder {
private String url;
private String user;
@@ -54,4 +60,5 @@ public class Db {
connection.setAutoCommit(false);
return connection;
}
+
}