16
16
package org .mybatis .dynamic .sql .delete ;
17
17
18
18
import java .util .Objects ;
19
+ import java .util .function .Consumer ;
19
20
import java .util .function .Function ;
20
21
21
22
import org .jetbrains .annotations .NotNull ;
22
23
import org .mybatis .dynamic .sql .SqlTable ;
24
+ import org .mybatis .dynamic .sql .configuration .StatementConfiguration ;
23
25
import org .mybatis .dynamic .sql .util .Buildable ;
24
26
import org .mybatis .dynamic .sql .where .AbstractWhereDSL ;
25
27
import org .mybatis .dynamic .sql .where .AbstractWhereSupport ;
26
28
import org .mybatis .dynamic .sql .where .WhereModel ;
27
29
28
- public class DeleteDSL <R > extends AbstractWhereSupport <DeleteDSL <R >.DeleteWhereBuilder > implements Buildable <R > {
30
+ public class DeleteDSL <R > extends AbstractWhereSupport <DeleteDSL <R >.DeleteWhereBuilder , DeleteDSL <R >>
31
+ implements Buildable <R > {
29
32
30
33
private final Function <DeleteModel , R > adapterFunction ;
31
34
private final SqlTable table ;
32
35
private final String tableAlias ;
33
- private final DeleteWhereBuilder whereBuilder = new DeleteWhereBuilder ();
36
+ private DeleteWhereBuilder whereBuilder ;
37
+ private final StatementConfiguration statementConfiguration = new StatementConfiguration ();
34
38
35
39
private DeleteDSL (SqlTable table , String tableAlias , Function <DeleteModel , R > adapterFunction ) {
36
40
this .table = Objects .requireNonNull (table );
@@ -40,6 +44,9 @@ private DeleteDSL(SqlTable table, String tableAlias, Function<DeleteModel, R> ad
40
44
41
45
@ Override
42
46
public DeleteWhereBuilder where () {
47
+ if (whereBuilder == null ) {
48
+ whereBuilder = new DeleteWhereBuilder ();
49
+ }
43
50
return whereBuilder ;
44
51
}
45
52
@@ -52,11 +59,19 @@ public DeleteWhereBuilder where() {
52
59
@ NotNull
53
60
@ Override
54
61
public R build () {
55
- DeleteModel deleteModel = DeleteModel .withTable (table )
56
- .withTableAlias (tableAlias )
57
- .withWhereModel (whereBuilder .buildWhereModel ())
58
- .build ();
59
- return adapterFunction .apply (deleteModel );
62
+ DeleteModel .Builder deleteModelBuilder = DeleteModel .withTable (table )
63
+ .withTableAlias (tableAlias );
64
+ if (whereBuilder != null ) {
65
+ deleteModelBuilder .withWhereModel (whereBuilder .buildWhereModel ());
66
+ }
67
+
68
+ return adapterFunction .apply (deleteModelBuilder .build ());
69
+ }
70
+
71
+ @ Override
72
+ public DeleteDSL <R > configureStatement (Consumer <StatementConfiguration > consumer ) {
73
+ consumer .accept (statementConfiguration );
74
+ return this ;
60
75
}
61
76
62
77
public static <R > DeleteDSL <R > deleteFrom (Function <DeleteModel , R > adapterFunction , SqlTable table ,
@@ -74,7 +89,9 @@ public static DeleteDSL<DeleteModel> deleteFrom(SqlTable table, String tableAlia
74
89
75
90
public class DeleteWhereBuilder extends AbstractWhereDSL <DeleteWhereBuilder > implements Buildable <R > {
76
91
77
- private DeleteWhereBuilder () {}
92
+ private DeleteWhereBuilder () {
93
+ super (statementConfiguration );
94
+ }
78
95
79
96
@ NotNull
80
97
@ Override
0 commit comments