Skip to content

Commit 0e5a584

Browse files
mp911deschauder
authored andcommitted
#289 - Add support for Criteria composition.
We now support composition of Criteria objects to create a Criteria from one or more top-level criteria and to compose nested AND/OR Criteria objects: Criteria.where("name").is("Foo")).and(Criteria.where("name").is("Bar").or("age") .lessThan(49).or(Criteria.where("name").not("Bar").and("age").greaterThan(49)) Original pull request: #307.
1 parent b3d0002 commit 0e5a584

File tree

6 files changed

+415
-34
lines changed

6 files changed

+415
-34
lines changed

Diff for: src/main/java/org/springframework/data/r2dbc/core/DefaultStatementMapper.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private PreparedOperation<Select> getMappedObject(SelectSpec selectSpec,
8888
BindMarkers bindMarkers = this.dialect.getBindMarkersFactory().create();
8989
Bindings bindings = Bindings.empty();
9090

91-
if (selectSpec.getCriteria() != null) {
91+
if (!selectSpec.getCriteria().isEmpty()) {
9292

9393
BoundCondition mappedObject = this.updateMapper.getMappedObject(bindMarkers, selectSpec.getCriteria(), table,
9494
entity);
@@ -203,7 +203,7 @@ private PreparedOperation<Update> getMappedObject(UpdateSpec updateSpec,
203203

204204
Update update;
205205

206-
if (updateSpec.getCriteria() != null) {
206+
if (!updateSpec.getCriteria().isEmpty()) {
207207

208208
BoundCondition boundCondition = this.updateMapper.getMappedObject(bindMarkers, updateSpec.getCriteria(), table,
209209
entity);
@@ -237,7 +237,7 @@ private PreparedOperation<Delete> getMappedObject(DeleteSpec deleteSpec,
237237
Bindings bindings = Bindings.empty();
238238

239239
Delete delete;
240-
if (deleteSpec.getCriteria() != null) {
240+
if (!deleteSpec.getCriteria().isEmpty()) {
241241

242242
BoundCondition boundCondition = this.updateMapper.getMappedObject(bindMarkers, deleteSpec.getCriteria(), table,
243243
entity);

Diff for: src/main/java/org/springframework/data/r2dbc/core/StatementMapper.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class SelectSpec {
185185
private final Table table;
186186
private final List<String> projectedFields;
187187
private final List<Expression> selectList;
188-
private final @Nullable Criteria criteria;
188+
private final Criteria criteria;
189189
private final Sort sort;
190190
private final long offset;
191191
private final int limit;
@@ -219,7 +219,7 @@ public static SelectSpec create(String table) {
219219
* @since 1.1
220220
*/
221221
public static SelectSpec create(SqlIdentifier table) {
222-
return new SelectSpec(Table.create(table), Collections.emptyList(), Collections.emptyList(), null,
222+
return new SelectSpec(Table.create(table), Collections.emptyList(), Collections.emptyList(), Criteria.empty(),
223223
Sort.unsorted(), -1, -1);
224224
}
225225

@@ -463,9 +463,9 @@ class UpdateSpec {
463463
@Nullable
464464
private final Update update;
465465

466-
private final @Nullable Criteria criteria;
466+
private final Criteria criteria;
467467

468-
protected UpdateSpec(SqlIdentifier table, @Nullable Update update, @Nullable Criteria criteria) {
468+
protected UpdateSpec(SqlIdentifier table, @Nullable Update update, Criteria criteria) {
469469

470470
this.table = table;
471471
this.update = update;
@@ -490,7 +490,7 @@ public static UpdateSpec create(String table, Update update) {
490490
* @since 1.1
491491
*/
492492
public static UpdateSpec create(SqlIdentifier table, Update update) {
493-
return new UpdateSpec(table, update, null);
493+
return new UpdateSpec(table, update, Criteria.empty());
494494
}
495495

496496
/**
@@ -512,7 +512,6 @@ public Update getUpdate() {
512512
return this.update;
513513
}
514514

515-
@Nullable
516515
public Criteria getCriteria() {
517516
return this.criteria;
518517
}
@@ -525,9 +524,9 @@ class DeleteSpec {
525524

526525
private final SqlIdentifier table;
527526

528-
private final @Nullable Criteria criteria;
527+
private final Criteria criteria;
529528

530-
protected DeleteSpec(SqlIdentifier table, @Nullable Criteria criteria) {
529+
protected DeleteSpec(SqlIdentifier table, Criteria criteria) {
531530
this.table = table;
532531
this.criteria = criteria;
533532
}
@@ -550,7 +549,7 @@ public static DeleteSpec create(String table) {
550549
* @since 1.1
551550
*/
552551
public static DeleteSpec create(SqlIdentifier table) {
553-
return new DeleteSpec(table, null);
552+
return new DeleteSpec(table, Criteria.empty());
554553
}
555554

556555
/**
@@ -567,7 +566,6 @@ public SqlIdentifier getTable() {
567566
return this.table;
568567
}
569568

570-
@Nullable
571569
public Criteria getCriteria() {
572570
return this.criteria;
573571
}

0 commit comments

Comments
 (0)