summaryrefslogtreecommitdiff
path: root/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java
diff options
context:
space:
mode:
Diffstat (limited to 'sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java')
-rw-r--r--sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java
index 7df3658..2c82474 100644
--- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java
+++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlDao.java
@@ -1,7 +1,11 @@
package io.trygvis.persistence.sql;
import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
public abstract class SqlDao<Id, T> implements FromResultSet<T> {
@@ -17,9 +21,26 @@ public abstract class SqlDao<Id, T> implements FromResultSet<T> {
public abstract void deleteById(Id id) throws SQLException;
-// public abstract TypedQuery<T> query();
-
public abstract T selectById(Id id) throws SQLException;
public abstract void update(T entity) throws SQLException;
+
+ public abstract List<T> selectWhere(String where) throws SQLException;
+
+ // -----------------------------------------------------------------------
+ // Protected
+ // -----------------------------------------------------------------------
+
+ protected static <T> List<T> runQuery(Connection c, String sql, FromResultSet<T> f) throws SQLException {
+ try (PreparedStatement stmt = c.prepareStatement(sql)) {
+ ResultSet rs = stmt.executeQuery();
+
+ List<T> list = new ArrayList<>();
+ while (rs.next()) {
+ list.add(f.fromResultSet(rs));
+ }
+
+ return list;
+ }
+ }
}