Skip to content

Commit 8ef1fe4

Browse files
committed
Move SQL fragments into statement configuration
1 parent 01cd1bd commit 8ef1fe4

File tree

13 files changed

+85
-268
lines changed

13 files changed

+85
-268
lines changed

src/main/java/org/mybatis/dynamic/sql/common/CommonBuilder.java

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.mybatis.dynamic.sql.common;
1717

1818
import org.jspecify.annotations.Nullable;
19-
import org.mybatis.dynamic.sql.Renderable;
2019
import org.mybatis.dynamic.sql.SqlTable;
2120
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
2221
import org.mybatis.dynamic.sql.where.EmbeddedWhereModel;
@@ -33,9 +32,6 @@ public abstract class CommonBuilder<T extends CommonBuilder<T>> {
3332
private @Nullable Long limit;
3433
private @Nullable OrderByModel orderByModel;
3534
private @Nullable StatementConfiguration statementConfiguration;
36-
private @Nullable Renderable afterKeywordFragment;
37-
private @Nullable Renderable afterStatementFragment;
38-
private @Nullable Renderable beforeStatementFragment;
3935

4036
public @Nullable SqlTable table() {
4137
return table;
@@ -61,18 +57,6 @@ public abstract class CommonBuilder<T extends CommonBuilder<T>> {
6157
return statementConfiguration;
6258
}
6359

64-
public @Nullable Renderable afterKeywordFragment() {
65-
return afterKeywordFragment;
66-
}
67-
68-
public @Nullable Renderable afterStatementFragment() {
69-
return afterStatementFragment;
70-
}
71-
72-
public @Nullable Renderable beforeStatementFragment() {
73-
return beforeStatementFragment;
74-
}
75-
7660
public T withTable(SqlTable table) {
7761
this.table = table;
7862
return getThis();
@@ -103,20 +87,5 @@ public T withStatementConfiguration(StatementConfiguration statementConfiguratio
10387
return getThis();
10488
}
10589

106-
public T withAfterKeywordFragment(@Nullable Renderable afterKeywordFragment) {
107-
this.afterKeywordFragment = afterKeywordFragment;
108-
return getThis();
109-
}
110-
111-
public T withAfterStatementFragment(@Nullable Renderable afterStatementFragment) {
112-
this.afterStatementFragment = afterStatementFragment;
113-
return getThis();
114-
}
115-
116-
public T withBeforeStatementFragment(@Nullable Renderable beforeStatementFragment) {
117-
this.beforeStatementFragment = beforeStatementFragment;
118-
return getThis();
119-
}
120-
12190
protected abstract T getThis();
12291
}

src/main/java/org/mybatis/dynamic/sql/common/CommonModel.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.Optional;
2020

2121
import org.jspecify.annotations.Nullable;
22-
import org.mybatis.dynamic.sql.Renderable;
2322
import org.mybatis.dynamic.sql.SqlTable;
2423
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
2524
import org.mybatis.dynamic.sql.where.EmbeddedWhereModel;
@@ -35,9 +34,6 @@ public abstract class CommonModel {
3534
private final @Nullable Long limit;
3635
private final @Nullable OrderByModel orderByModel;
3736
private final StatementConfiguration statementConfiguration;
38-
private final @Nullable Renderable afterKeywordFragment;
39-
private final @Nullable Renderable afterStatementFragment;
40-
private final @Nullable Renderable beforeStatementFragment;
4137

4238
protected CommonModel (CommonBuilder<?> builder) {
4339
table = Objects.requireNonNull(builder.table());
@@ -46,9 +42,6 @@ protected CommonModel (CommonBuilder<?> builder) {
4642
limit = builder.limit();
4743
orderByModel = builder.orderByModel();
4844
statementConfiguration = Objects.requireNonNull(builder.statementConfiguration());
49-
afterKeywordFragment = builder.afterKeywordFragment();
50-
afterStatementFragment = builder.afterStatementFragment();
51-
beforeStatementFragment = builder.beforeStatementFragment();
5245
}
5346

5447
public SqlTable table() {
@@ -74,16 +67,4 @@ public Optional<OrderByModel> orderByModel() {
7467
public StatementConfiguration statementConfiguration() {
7568
return statementConfiguration;
7669
}
77-
78-
public Optional<Renderable> afterKeywordFragment() {
79-
return Optional.ofNullable(afterKeywordFragment);
80-
}
81-
82-
public Optional<Renderable> afterStatementFragment() {
83-
return Optional.ofNullable(afterStatementFragment);
84-
}
85-
86-
public Optional<Renderable> beforeStatementFragment() {
87-
return Optional.ofNullable(beforeStatementFragment);
88-
}
8970
}

src/main/java/org/mybatis/dynamic/sql/common/CustomSqlDSL.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/main/java/org/mybatis/dynamic/sql/configuration/StatementConfiguration.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515
*/
1616
package org.mybatis.dynamic.sql.configuration;
1717

18+
import java.util.Optional;
19+
20+
import org.jspecify.annotations.Nullable;
21+
import org.mybatis.dynamic.sql.Renderable;
1822
import org.mybatis.dynamic.sql.exception.NonRenderingWhereClauseException;
23+
import org.mybatis.dynamic.sql.util.FragmentAndParameters;
1924

2025
/**
2126
* This class can be used to change some behaviors of the framework. Every configurable statement
@@ -43,13 +48,56 @@
4348
public class StatementConfiguration {
4449
private boolean isNonRenderingWhereClauseAllowed =
4550
GlobalContext.getConfiguration().isIsNonRenderingWhereClauseAllowed();
51+
private @Nullable Renderable afterKeywordFragment;
52+
private @Nullable Renderable afterStatementFragment;
53+
private @Nullable Renderable beforeStatementFragment;
4654

4755
public boolean isNonRenderingWhereClauseAllowed() {
4856
return isNonRenderingWhereClauseAllowed;
4957
}
5058

59+
public Optional<Renderable> afterKeywordFragment() {
60+
return Optional.ofNullable(afterKeywordFragment);
61+
}
62+
63+
public Optional<Renderable> afterStatementFragment() {
64+
return Optional.ofNullable(afterStatementFragment);
65+
}
66+
67+
public Optional<Renderable> beforeStatementFragment() {
68+
return Optional.ofNullable(beforeStatementFragment);
69+
}
70+
5171
public StatementConfiguration setNonRenderingWhereClauseAllowed(boolean nonRenderingWhereClauseAllowed) {
5272
isNonRenderingWhereClauseAllowed = nonRenderingWhereClauseAllowed;
5373
return this;
5474
}
75+
76+
public StatementConfiguration withSqlAfterKeyword(String sql) {
77+
return withSqlAfterKeyword(rc -> FragmentAndParameters.fromFragment(sql));
78+
}
79+
80+
public StatementConfiguration withSqlAfterKeyword(Renderable renderable) {
81+
afterKeywordFragment = renderable;
82+
return this;
83+
}
84+
85+
86+
public StatementConfiguration withSqlAfterStatement(String sql) {
87+
return withSqlAfterStatement(rc -> FragmentAndParameters.fromFragment(sql));
88+
}
89+
90+
public StatementConfiguration withSqlAfterStatement(Renderable renderable) {
91+
afterStatementFragment = renderable;
92+
return this;
93+
}
94+
95+
public StatementConfiguration withSqlBeforeStatement(String sql) {
96+
return withSqlBeforeStatement(rc -> FragmentAndParameters.fromFragment(sql));
97+
}
98+
99+
public StatementConfiguration withSqlBeforeStatement(Renderable renderable) {
100+
beforeStatementFragment = renderable;
101+
return this;
102+
}
55103
}

src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222
import java.util.function.Function;
2323

2424
import org.jspecify.annotations.Nullable;
25-
import org.mybatis.dynamic.sql.Renderable;
2625
import org.mybatis.dynamic.sql.SortSpecification;
2726
import org.mybatis.dynamic.sql.SqlTable;
28-
import org.mybatis.dynamic.sql.common.CustomSqlDSL;
2927
import org.mybatis.dynamic.sql.common.OrderByModel;
3028
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
3129
import org.mybatis.dynamic.sql.util.Buildable;
@@ -34,7 +32,7 @@
3432
import org.mybatis.dynamic.sql.where.EmbeddedWhereModel;
3533

3634
public class DeleteDSL<R> implements AbstractWhereStarter<DeleteDSL<R>.DeleteWhereBuilder, DeleteDSL<R>>,
37-
Buildable<R>, CustomSqlDSL<DeleteDSL<R>> {
35+
Buildable<R> {
3836

3937
private final Function<DeleteModel, R> adapterFunction;
4038
private final SqlTable table;
@@ -43,9 +41,6 @@ public class DeleteDSL<R> implements AbstractWhereStarter<DeleteDSL<R>.DeleteWhe
4341
private final StatementConfiguration statementConfiguration = new StatementConfiguration();
4442
private @Nullable Long limit;
4543
private @Nullable OrderByModel orderByModel;
46-
private @Nullable Renderable afterKeywordFragment;
47-
private @Nullable Renderable afterStatementFragment;
48-
private @Nullable Renderable beforeStatementFragment;
4944

5045
private DeleteDSL(SqlTable table, @Nullable String tableAlias, Function<DeleteModel, R> adapterFunction) {
5146
this.table = Objects.requireNonNull(table);
@@ -91,9 +86,6 @@ public R build() {
9186
.withOrderByModel(orderByModel)
9287
.withWhereModel(whereBuilder == null ? null : whereBuilder.buildWhereModel())
9388
.withStatementConfiguration(statementConfiguration)
94-
.withAfterKeywordFragment(afterKeywordFragment)
95-
.withAfterStatementFragment(afterStatementFragment)
96-
.withBeforeStatementFragment(beforeStatementFragment)
9789
.build();
9890

9991
return adapterFunction.apply(deleteModel);
@@ -104,25 +96,6 @@ public DeleteDSL<R> configureStatement(Consumer<StatementConfiguration> consumer
10496
consumer.accept(statementConfiguration);
10597
return this;
10698
}
107-
108-
@Override
109-
public DeleteDSL<R> withSqlAfterKeyword(Renderable renderable) {
110-
this.afterKeywordFragment = renderable;
111-
return this;
112-
}
113-
114-
@Override
115-
public DeleteDSL<R> withSqlAfterStatement(Renderable renderable) {
116-
this.afterStatementFragment = renderable;
117-
return this;
118-
}
119-
120-
@Override
121-
public DeleteDSL<R> withSqlBeforeStatement(Renderable renderable) {
122-
this.beforeStatementFragment = renderable;
123-
return this;
124-
}
125-
12699
public static <R> DeleteDSL<R> deleteFrom(Function<DeleteModel, R> adapterFunction, SqlTable table,
127100
@Nullable String tableAlias) {
128101
return new DeleteDSL<>(table, tableAlias, adapterFunction);
@@ -137,7 +110,7 @@ public static DeleteDSL<DeleteModel> deleteFrom(SqlTable table, String tableAlia
137110
}
138111

139112
public class DeleteWhereBuilder extends AbstractWhereFinisher<DeleteWhereBuilder>
140-
implements Buildable<R>, CustomSqlDSL<DeleteDSL<R>> {
113+
implements Buildable<R> {
141114

142115
private DeleteWhereBuilder() {
143116
super(DeleteDSL.this);
@@ -173,20 +146,5 @@ protected DeleteWhereBuilder getThis() {
173146
protected EmbeddedWhereModel buildWhereModel() {
174147
return buildModel();
175148
}
176-
177-
@Override
178-
public DeleteDSL<R> withSqlAfterKeyword(Renderable renderable) {
179-
return DeleteDSL.this.withSqlAfterKeyword(renderable);
180-
}
181-
182-
@Override
183-
public DeleteDSL<R> withSqlAfterStatement(Renderable renderable) {
184-
return DeleteDSL.this.withSqlAfterStatement(renderable);
185-
}
186-
187-
@Override
188-
public DeleteDSL<R> withSqlBeforeStatement(Renderable renderable) {
189-
return DeleteDSL.this.withSqlBeforeStatement(renderable);
190-
}
191149
}
192150
}

src/main/java/org/mybatis/dynamic/sql/delete/render/DeleteRenderer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ private DeleteStatementProvider toDeleteStatementProvider(FragmentCollector frag
7373
}
7474

7575
private Optional<FragmentAndParameters> calculateBeforeStatementFragment() {
76-
return deleteModel.beforeStatementFragment().map(f -> f.render(renderingContext));
76+
return deleteModel.statementConfiguration().beforeStatementFragment().map(f -> f.render(renderingContext));
7777
}
7878

7979
private Optional<FragmentAndParameters> calculateAfterKeywordFragment() {
80-
return deleteModel.afterKeywordFragment().map(f -> f.render(renderingContext));
80+
return deleteModel.statementConfiguration().afterKeywordFragment().map(f -> f.render(renderingContext));
8181
}
8282

8383
private Optional<FragmentAndParameters> calculateAfterStatementFragment() {
84-
return deleteModel.afterStatementFragment().map(f -> f.render(renderingContext));
84+
return deleteModel.statementConfiguration().afterStatementFragment().map(f -> f.render(renderingContext));
8585
}
8686

8787
private FragmentAndParameters calculateTable() {

0 commit comments

Comments
 (0)