Skip to content

Commit c7956be

Browse files
vominhtriuslpandzic
authored andcommitted
feat: implement queryMany with pageable
1 parent 9543e8c commit c7956be

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

infobip-spring-data-jdbc-querydsl/src/main/java/com/infobip/spring/data/jdbc/QuerydslJdbcFragment.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import java.util.Optional;
1010
import java.util.function.Function;
1111

12+
import org.springframework.data.domain.Page;
13+
import org.springframework.data.domain.Pageable;
14+
1215
public interface QuerydslJdbcFragment<T> {
1316

1417
/**
@@ -24,6 +27,8 @@ public interface QuerydslJdbcFragment<T> {
2427

2528
List<T> queryMany(Function<SQLQuery<?>, SQLQuery<T>> query);
2629

30+
Page<T> queryMany(Function<SQLQuery<?>, SQLQuery<T>> query, Pageable pageable);
31+
2732
/**
2833
* @return amount of affected rows
2934
*/

infobip-spring-data-jdbc-querydsl/src/main/java/com/infobip/spring/data/jdbc/QuerydslJdbcPredicateExecutor.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ List<T> queryMany(SQLQuery<T> query) {
184184
return result;
185185
}
186186

187+
Page<T> queryMany(SQLQuery<T> query, Pageable pageable) {
188+
Assert.notNull(query, "Query must not be null!");
189+
Assert.notNull(pageable, "Pageable must not be null!");
190+
191+
var content = queryMany(querydsl.applyPagination(pageable, query).select(constructorExpression));
192+
193+
return PageableExecutionUtils.getPage(content, pageable, query::fetchCount);
194+
}
195+
187196
@Nullable
188197
private List<T> query(SQLQuery<T> query,
189198
RowMapperResultSetExtractor<T> rowMapperResultSetExtractor) {

infobip-spring-data-jdbc-querydsl/src/main/java/com/infobip/spring/data/jdbc/SimpleQuerydslJdbcFragment.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@
1515
*/
1616
package com.infobip.spring.data.jdbc;
1717

18-
import com.querydsl.core.types.*;
19-
import com.querydsl.sql.*;
20-
import com.querydsl.sql.dml.SQLUpdateClause;
21-
import org.springframework.transaction.annotation.Transactional;
22-
2318
import java.util.List;
2419
import java.util.Optional;
2520
import java.util.function.Function;
2621

22+
import org.springframework.data.domain.Page;
23+
import org.springframework.data.domain.Pageable;
24+
import org.springframework.transaction.annotation.Transactional;
25+
26+
import com.querydsl.core.types.ConstructorExpression;
27+
import com.querydsl.core.types.Expression;
28+
import com.querydsl.core.types.Predicate;
29+
import com.querydsl.sql.RelationalPath;
30+
import com.querydsl.sql.SQLQuery;
31+
import com.querydsl.sql.SQLQueryFactory;
32+
import com.querydsl.sql.dml.SQLUpdateClause;
33+
2734
@Transactional(readOnly = true)
2835
public class SimpleQuerydslJdbcFragment<T> implements QuerydslJdbcFragment<T> {
2936

@@ -58,6 +65,11 @@ public List<T> queryMany(Function<SQLQuery<?>, SQLQuery<T>> query) {
5865
return querydslJdbcPredicateExecutor.queryMany(query.apply(sqlQueryFactory.query()));
5966
}
6067

68+
@Override
69+
public Page<T> queryMany(Function<SQLQuery<?>, SQLQuery<T>> query, Pageable pageable) {
70+
return querydslJdbcPredicateExecutor.queryMany(query.apply(sqlQueryFactory.query()), pageable);
71+
}
72+
6173
@Override
6274
@Transactional
6375
public long update(Function<SQLUpdateClause, Long> update) {

0 commit comments

Comments
 (0)