diff options
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.java | 25 |
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; + } + } } |