Skip to content

Commit 69dea1b

Browse files
committed
fix #162
1 parent 4cd0f32 commit 69dea1b

File tree

8 files changed

+33
-18
lines changed

8 files changed

+33
-18
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>2.10.21</version>
18+
<version>2.10.22</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.21</version>
9+
<version>2.10.22</version>
1010
</parent>
1111

1212
<name>springboot-starter-data-authorization</name>

springboot-starter-data-fast/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-parent</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>2.10.21</version>
8+
<version>2.10.22</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicSQLBuilder.java

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,62 @@
1717
class DynamicSQLBuilder {
1818

1919
private final PageRequest request;
20-
private final Class<?> clazz;
2120

2221
private final List<Object> params = new ArrayList<>();
2322
private int paramIndex = 1;
23+
private final StringBuilder hql;
24+
private final StringBuilder countHql ;
2425

2526
public DynamicSQLBuilder(PageRequest request, Class<?> clazz) {
2627
this.request = request;
27-
this.clazz = clazz;
28+
this.hql = new StringBuilder("FROM " + clazz.getSimpleName() + " WHERE ");
29+
this.countHql = new StringBuilder("SELECT COUNT(1) FROM " + clazz.getSimpleName() + " WHERE ");
30+
this.build();
2831
}
2932

33+
public String getHQL(){
34+
return this.hql.toString();
35+
}
36+
37+
public String getCountHQL(){
38+
return this.countHql.toString();
39+
}
3040

31-
public String getHQL() {
32-
StringBuilder hql = new StringBuilder("FROM " + clazz.getSimpleName() + " WHERE ");
41+
private void build() {
42+
StringBuilder querySQL = new StringBuilder();
43+
StringBuilder orderSQL = new StringBuilder();
3344
RequestFilter requestFilter = request.getRequestFilter();
3445
if (requestFilter.hasFilter()) {
3546
List<Filter> filters = requestFilter.getFilters();
3647
for (int i = 0; i < filters.size(); i++) {
3748
Filter filter = filters.get(i);
38-
this.buildSQL(filter, hql);
49+
this.buildSQL(filter, querySQL);
3950
if (i != filters.size() - 1) {
40-
hql.append(" AND ");
51+
querySQL.append(" AND ");
4152
}
4253
}
4354
}
4455

4556
Sort sort = request.getSort();
4657
if (sort.isSorted()) {
47-
hql.append(" ORDER BY ");
58+
orderSQL.append(" ORDER BY ");
4859
List<Sort.Order> orders = sort.toList();
4960
for (int i = 0; i < orders.size(); i++) {
5061
Sort.Order order = orders.get(i);
51-
hql.append(order.getProperty()).append(" ").append(order.getDirection().name());
62+
orderSQL.append(order.getProperty()).append(" ").append(order.getDirection().name());
5263
if (i != orders.size() - 1) {
53-
hql.append(",");
64+
orderSQL.append(",");
5465
}
5566
}
5667
}
5768

69+
this.hql.append(querySQL);
70+
this.hql.append(orderSQL);
71+
this.countHql.append(querySQL);
72+
5873
log.debug("hql:{}", hql);
5974
log.debug("params:{}", params);
60-
return hql.toString();
75+
6176
}
6277

6378

@@ -139,7 +154,6 @@ private void buildSQL(Filter filter, StringBuilder hql) {
139154
params.add(Arrays.asList(filter.getValue()));
140155
paramIndex++;
141156
}
142-
143157
if (filter.isGreaterThan()) {
144158
hql.append(filter.getKey()).append(" > ?").append(paramIndex);
145159
params.add(filter.getValue()[0]);
@@ -172,4 +186,5 @@ private void buildSQL(Filter filter, StringBuilder hql) {
172186
public Object[] getParams() {
173187
return params.toArray();
174188
}
189+
175190
}

springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/FastRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ default Page<T> pageRequest(PageRequest request) {
2929
if (request.hasFilter()) {
3030
Class<T> clazz = getEntityClass();
3131
DynamicSQLBuilder dynamicSQLBuilder = new DynamicSQLBuilder(request, clazz);
32-
return dynamicPageQuery(dynamicSQLBuilder.getHQL(), request, dynamicSQLBuilder.getParams());
32+
return dynamicPageQuery(dynamicSQLBuilder.getHQL(),dynamicSQLBuilder.getCountHQL(), request, dynamicSQLBuilder.getParams());
3333
}
3434
return findAll((org.springframework.data.domain.PageRequest) request);
3535
}

springboot-starter-flow/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.21</version>
9+
<version>2.10.22</version>
1010
</parent>
1111

1212
<name>springboot-starter-flow</name>

springboot-starter-security/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.10.21</version>
9+
<version>2.10.22</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-security</artifactId>

springboot-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.codingapi.springboot</groupId>
77
<artifactId>springboot-parent</artifactId>
8-
<version>2.10.21</version>
8+
<version>2.10.22</version>
99
</parent>
1010
<artifactId>springboot-starter</artifactId>
1111

0 commit comments

Comments
 (0)