From 01557b4626d184f58c492c3d4c1fc74cb9a29a1e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 10 Aug 2013 19:12:49 +0200 Subject: o Getting selectById() to work with references. --- .../src/main/java/io/trygvis/persistence/sql/SqlDao.java | 15 ++++++++++++++- .../main/java/io/trygvis/persistence/sql/SqlSession.java | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'sql-persistence') 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 c253229..361fd95 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 @@ -36,10 +36,19 @@ public abstract class SqlDao { protected abstract T newEntity(Row row) throws SQLException; protected List runQuery(final String sql) throws SQLException { + return runQuery(new Preparator() { + @Override + public void prepare(PreparedStatement stmt) throws SQLException { + } + }, sql); + } + + protected List runQuery(final Preparator preparator, final String sql) throws SQLException { return session.query(new SqlExecutor.QueryCommand() { @Override public List run(Connection c) throws SQLException { try (PreparedStatement stmt = c.prepareStatement(sql)) { + preparator.prepare(stmt); ResultSet rs = stmt.executeQuery(); List rows = new ArrayList<>(); @@ -47,7 +56,7 @@ public abstract class SqlDao { rows.add(newRow(rs)); } - List entities = new ArrayList(rows.size()); + List entities = new ArrayList<>(rows.size()); for (Row row : rows) { entities.add(newEntity(row)); } @@ -57,4 +66,8 @@ public abstract class SqlDao { } }); } + + protected static interface Preparator { + void prepare(PreparedStatement stmt) throws SQLException; + } } diff --git a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java index b5e58eb..43f1206 100644 --- a/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java +++ b/sql-persistence/src/main/java/io/trygvis/persistence/sql/SqlSession.java @@ -6,6 +6,7 @@ import java.sql.Statement; import java.util.List; public class SqlSession { + // TODO: Make private public final Connection c; public SqlSession(Connection c) { -- cgit v1.2.3