diff --git a/jOOQ/src/main/java/org/jooq/DAO.java b/jOOQ/src/main/java/org/jooq/DAO.java index 040cc4231e..74b492821d 100644 --- a/jOOQ/src/main/java/org/jooq/DAO.java +++ b/jOOQ/src/main/java/org/jooq/DAO.java @@ -61,6 +61,15 @@ public interface DAO, P, T> { */ Configuration configuration(); + /** + * Expose the {@link RecordMapper} that is used internally by this + * DAO to map from records of type R to POJOs of + * type P. + * + * @return the DAO's underlying RecordMapper + */ + RecordMapper mapper(); + /** * Performs an INSERT statement for a given POJO * diff --git a/jOOQ/src/main/java/org/jooq/impl/DAOImpl.java b/jOOQ/src/main/java/org/jooq/impl/DAOImpl.java index b235e33a4f..e4b211214a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DAOImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DAOImpl.java @@ -95,6 +95,16 @@ public abstract class DAOImpl, P, T> implements DAO return configuration; } + /** + * {@inheritDoc} + *

+ * Subclasses may override this method to provide custom implementations. + */ + @Override + public /* non-final */ RecordMapper mapper() { + return mapper; + } + // ------------------------------------------------------------------------- // XXX: DAO API // ------------------------------------------------------------------------- @@ -211,7 +221,7 @@ public abstract class DAOImpl, P, T> implements DAO return using(configuration) .selectFrom(table) .fetch() - .map(mapper); + .map(mapper()); } @Override @@ -226,7 +236,7 @@ public abstract class DAOImpl, P, T> implements DAO .fetchOne(); } - return mapper.map(record); + return mapper().map(record); } @Override @@ -235,7 +245,7 @@ public abstract class DAOImpl, P, T> implements DAO .selectFrom(table) .where(field.in(values)) .fetch() - .map(mapper); + .map(mapper()); } @Override @@ -245,7 +255,7 @@ public abstract class DAOImpl, P, T> implements DAO .where(field.equal(value)) .fetchOne(); - return mapper.map(record); + return mapper().map(record); } @Override