Skip to content

Commit fea6c7c

Browse files
committed
Add the peek method to make debugging easy
1 parent 93b6ecd commit fea6c7c

25 files changed

+135
-18
lines changed

docs/criteria-api.rst

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ Be careful of the following points when you use the ``select`` method:
826826
Debugging (Entityql, NativeSql)
827827
-------------------------------
828828
829-
To know the SQL statement built by the DSLs, use the ``asSql`` method instead of the ``execute`` method:
829+
To know the SQL statement built by the DSLs, use the ``asSql`` method:
830830
831831
.. code-block:: java
832832
@@ -848,6 +848,31 @@ The above code prints as follows:
848848
The ``asSql`` method doesn't issue the SQL statement to your Database.
849849
It only builds the SQL statement and return it as an ``Sql`` object.
850850
851+
You can also get the ``Sql`` object by calling the ``peek`` method.
852+
853+
.. code-block:: java
854+
855+
Department_ d = new Department_();
856+
857+
List<Department> list =
858+
entityql
859+
.from(d)
860+
.peek(System.out::println)
861+
.where(c -> c.eq(d.departmentName, "SALES"))
862+
.peek(System.out::println)
863+
.orderBy(c -> c.asc(d.location))
864+
.peek(sql -> System.out.println(sql.getFormattedSql()))
865+
.getResultList();
866+
867+
The above code prints as follows:
868+
869+
.. code-block:: sh
870+
871+
select t0_.DEPARTMENT_ID, t0_.DEPARTMENT_NO, t0_.DEPARTMENT_NAME, t0_.LOCATION, t0_.VERSION from DEPARTMENT t0_
872+
select t0_.DEPARTMENT_ID, t0_.DEPARTMENT_NO, t0_.DEPARTMENT_NAME, t0_.LOCATION, t0_.VERSION from DEPARTMENT t0_ where t0_.DEPARTMENT_NAME = ?
873+
select t0_.DEPARTMENT_ID, t0_.DEPARTMENT_NO, t0_.DEPARTMENT_NAME, t0_.LOCATION, t0_.VERSION from DEPARTMENT t0_ where t0_.DEPARTMENT_NAME = 'SALES' order by t0_.LOCATION asc
874+
875+
851876
Sample projects
852877
===============
853878

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/AbstractStatement.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.lang.reflect.Method;
44
import java.util.Objects;
5+
import java.util.function.Consumer;
56
import java.util.function.Function;
67
import org.seasar.doma.DomaException;
78
import org.seasar.doma.jdbc.CommentContext;
@@ -10,7 +11,8 @@
1011
import org.seasar.doma.jdbc.command.Command;
1112
import org.seasar.doma.message.Message;
1213

13-
public abstract class AbstractStatement<RESULT> implements Statement<RESULT> {
14+
public abstract class AbstractStatement<RESULT, STMT extends AbstractStatement<RESULT, STMT>>
15+
implements Statement<RESULT>, Peekable<STMT> {
1416

1517
protected static final String EXECUTE_METHOD_NAME = "execute";
1618
protected static final Method EXECUTE_METHOD;
@@ -41,6 +43,13 @@ public Sql<?> asSql() {
4143
return command.getQuery().getSql();
4244
}
4345

46+
@Override
47+
@SuppressWarnings("unchecked")
48+
public STMT peek(Consumer<Sql<?>> consumer) {
49+
consumer.accept(asSql());
50+
return (STMT) this;
51+
}
52+
4453
protected Function<String, String> createCommenter(String comment) {
4554
return sql -> {
4655
CommentContext context =
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
package org.seasar.doma.jdbc.criteria.statement;
22

33
import java.util.List;
4+
import java.util.function.Consumer;
45
import java.util.function.Function;
56
import java.util.stream.Collector;
67
import java.util.stream.Stream;
8+
import org.seasar.doma.jdbc.Sql;
79

810
public interface Collectable<ELEMENT> extends Statement<List<ELEMENT>>, Listable<ELEMENT> {
911

1012
<RESULT> RESULT mapStream(Function<Stream<ELEMENT>, RESULT> streamMapper);
1113

1214
<RESULT> RESULT collect(Collector<ELEMENT, ?, RESULT> collector);
15+
16+
default Collectable<ELEMENT> peek(Consumer<Sql<?>> consumer) {
17+
consumer.accept(asSql());
18+
return this;
19+
}
1320
}

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlBatchDeleteStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
import org.seasar.doma.jdbc.query.AutoBatchDeleteQuery;
1414
import org.seasar.doma.jdbc.query.Query;
1515

16-
public class EntityqlBatchDeleteStatement<ENTITY> extends AbstractStatement<List<ENTITY>> {
16+
public class EntityqlBatchDeleteStatement<ENTITY>
17+
extends AbstractStatement<List<ENTITY>, EntityqlBatchDeleteStatement<ENTITY>> {
1718

1819
private static final EmptySql EMPTY_SQL = new EmptySql(SqlKind.BATCH_DELETE);
1920
private final EntityDef<ENTITY> entityDef;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlBatchInsertStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
import org.seasar.doma.jdbc.query.AutoBatchInsertQuery;
1414
import org.seasar.doma.jdbc.query.Query;
1515

16-
public class EntityqlBatchInsertStatement<ENTITY> extends AbstractStatement<List<ENTITY>> {
16+
public class EntityqlBatchInsertStatement<ENTITY>
17+
extends AbstractStatement<List<ENTITY>, EntityqlBatchInsertStatement<ENTITY>> {
1718

1819
private static final EmptySql EMPTY_SQL = new EmptySql(SqlKind.BATCH_INSERT);
1920
private final EntityDef<ENTITY> entityDef;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlBatchUpdateStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
import org.seasar.doma.jdbc.query.AutoBatchUpdateQuery;
1414
import org.seasar.doma.jdbc.query.Query;
1515

16-
public class EntityqlBatchUpdateStatement<ENTITY> extends AbstractStatement<List<ENTITY>> {
16+
public class EntityqlBatchUpdateStatement<ENTITY>
17+
extends AbstractStatement<List<ENTITY>, EntityqlBatchUpdateStatement<ENTITY>> {
1718

1819
private static final EmptySql EMPTY_SQL = new EmptySql(SqlKind.BATCH_UPDATE);
1920
private final EntityDef<ENTITY> entityDef;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlDeleteStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
import org.seasar.doma.jdbc.query.AutoDeleteQuery;
1111
import org.seasar.doma.jdbc.query.Query;
1212

13-
public class EntityqlDeleteStatement<ENTITY> extends AbstractStatement<ENTITY> {
13+
public class EntityqlDeleteStatement<ENTITY>
14+
extends AbstractStatement<ENTITY, EntityqlDeleteStatement<ENTITY>> {
1415

1516
private final EntityDef<ENTITY> entityDef;
1617
private final ENTITY entity;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlInsertStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
import org.seasar.doma.jdbc.query.AutoInsertQuery;
1111
import org.seasar.doma.jdbc.query.Query;
1212

13-
public class EntityqlInsertStatement<ENTITY> extends AbstractStatement<ENTITY> {
13+
public class EntityqlInsertStatement<ENTITY>
14+
extends AbstractStatement<ENTITY, EntityqlInsertStatement<ENTITY>> {
1415

1516
private final EntityDef<ENTITY> entityDef;
1617
private final ENTITY entity;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlSelectStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
import org.seasar.doma.jdbc.criteria.query.CriteriaQuery;
2121
import org.seasar.doma.jdbc.criteria.query.SelectBuilder;
2222

23-
public class EntityqlSelectStatement<ENTITY> extends AbstractStatement<List<ENTITY>>
23+
public class EntityqlSelectStatement<ENTITY>
24+
extends AbstractStatement<List<ENTITY>, EntityqlSelectStatement<ENTITY>>
2425
implements Listable<ENTITY> {
2526

2627
private final SelectFromDeclaration declaration;

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlUpdateStatement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
import org.seasar.doma.jdbc.query.AutoUpdateQuery;
1111
import org.seasar.doma.jdbc.query.Query;
1212

13-
public class EntityqlUpdateStatement<ENTITY> extends AbstractStatement<ENTITY> {
13+
public class EntityqlUpdateStatement<ENTITY>
14+
extends AbstractStatement<ENTITY, EntityqlUpdateStatement<ENTITY>> {
1415

1516
private final EntityDef<ENTITY> entityDef;
1617
private final ENTITY entity;

0 commit comments

Comments
 (0)